Excel2000 VBA 東電 juyo-j.csv を取り込みカンマ区切り展開 その2 [Excel2000 VBA独習]
Excel2000 VBA 東電 juyo-j.csv を取り込みカンマ区切り展開 その2
タイマー機能を追加
サンプル http://www006.upp.so-net.ne.jp/telstar/touden_juyo-j.xls
(電力使用率が90%を超えたら第一次節電、95%を超えたら第二次節電、97%を超えたら自主計画停電にすることに決まった)
Sub interval_10()
On Error Resume Next
Dim timer_time As String
Workbooks("touden_juyo_timerV2.xls").Activate
'更新間隔時間取得
timer_time = Worksheets("グラフ").Range("K40")
'タイマーを利用するか?
If Range("H40") = "OFF" Then
Application.OnTime Range("J40"), "juyo_csv2", , False 'エラー
Exit Sub
End If
'実行時間set (Application.OnTime は複数セットできるので、マクロの実行のしかたによっては予期せぬ時に実行されてしまう恐れがある?
Application.OnTime Now + TimeValue(timer_time), "juyo_csv2" ', TimeValue("00:0:02")
'次回の実行時間表示
Worksheets("グラフ").Select
Range("J40") = Now + TimeValue(timer_time)
End Sub
Sub juyo_csv2()
'
'東電juyo-j.csvを取り込み、カンマ区切りを展開する
'sheet1→juyo-j sheet2→グラフ シート名を変更しておく
'
Dim i, j As Long
Dim 文字, 文字列 As Variant
'
Workbooks("東電グラフ更新.xls").Activate
Worksheets("juyo-j").Select
Range("A1", "E332").Delete
'juyo-j.csvを読み込む
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.tepco.co.jp/forecast/html/images/juyo-j.csv", Destination:= _
Range("A1"))
.Name = "juyo-j" '読込シート名
.Refresh BackgroundQuery:=False
End With
'カンマ区切りを展開
For i = 1 To 332
j = 0
文字列 = Split(Cells(i, "A").Value, ",")
For Each 文字 In 文字列
Cells(i, 1 + j + 1) = 文字 'B列から展開
j = j + 1
Next
Next i
'展開したdataをシート名(グラフ)にコピー
Worksheets("juyo-j").Range("B1", "E332").Copy Destination:=Worksheets("グラフ").Range("A1")
'更新を実行した時間を表示
Worksheets("グラフ").Select
Range("I40") = Now '実行日時
'off 設定なら終了
If Range("H40") = "OFF" Then
Range("J40") = Now
Exit Sub
End If
'新たに Application.OnTime を設定
Application.Run "interval_10"
End Sub
コメント 0