Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8677 / 13646 ツリー ←次へ | 前へ→

【31780】Webクエリで取り込んだデータを一定時間... フジオ 05/11/30(水) 1:26 質問[未読]
【31781】Re:Webクエリで取り込んだデータを一定時間... かみちゃん 05/11/30(水) 1:51 発言[未読]
【31804】Re:Webクエリで取り込んだデータを一定時間... Kein 05/11/30(水) 13:16 回答[未読]
【31820】Re:Webクエリで取り込んだデータを一定時... フジオ 05/11/30(水) 15:46 発言[未読]
【31829】Re:Webクエリで取り込んだデータを一定時... Kein 05/11/30(水) 16:44 回答[未読]
【31845】Re:Webクエリで取り込んだデータを一定時... フジオ 05/11/30(水) 23:27 質問[未読]
【31857】Re:Webクエリで取り込んだデータを一定時... Kein 05/12/1(木) 13:28 発言[未読]
【31882】Re:Webクエリで取り込んだデータを一定時... フジオ 05/12/1(木) 20:28 お礼[未読]
【31793】Re:追記 フジオ 05/11/30(水) 11:39 質問[未読]

【31780】Webクエリで取り込んだデータを一定時間...
質問  フジオ  - 05/11/30(水) 1:26 -

引用なし
パスワード
   現在Webクエリ機能で取り込んだテーブルをCSV形式で保存して
MySQLのほうにインポートしています。
これを
Webクエリ機能で同じテーブルを読み込み直す→CSV形式で上書き保存→
一定時間ごと(1時間もしくは1日)にこの作業を繰り返す。
といったことをやりたいです。
一度、CSV形式で保存すると外部データ範囲プロパティで定期的の更新することが
できなくて困っています。
VBAは使ったことが一度もありませんのでどう記述していいかサッパリわかりません。どなたか知恵を貸していただけないでしょうか。

【31781】Re:Webクエリで取り込んだデータを一定時...
発言  かみちゃん  - 05/11/30(水) 1:51 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>Webクエリ機能で同じテーブルを読み込み直す→CSV形式で上書き保存→
>一定時間ごと(1時間もしくは1日)にこの作業を繰り返す。
>といったことをやりたいです。
>一度、CSV形式で保存すると外部データ範囲プロパティで定期的の更新することが
>できなくて困っています。

Webクエリはよく使っているのですが、
CSVで保存する際には、一旦別Bookにコピーしてから保存するようにすればいいのではないでしょうか?

【31793】Re:追記
質問  フジオ  - 05/11/30(水) 11:39 -

引用なし
パスワード
   すいません、少し説明不足だったかもしれません。
Webクエリ機能で同じテーブルを読み込み直す→CSV形式で上書き保存→
一定時間ごと(1時間もしくは1日)にこの作業を繰り返す。
こういった作業を自動で行いたいという意味です。

【31804】Re:Webクエリで取り込んだデータを一定時...
回答  Kein  - 05/11/30(水) 13:16 -

引用なし
パスワード
   仮に "Sheet1" にWebクエリーのテーブルがあるとして

Worksheets("Sheet1").QueryTables(1).ResultRange.Copy
With Workbooks.Add(xlWBATWorksheet)
  .Worksheets(1).Range("A1").PasteSpecial xlPasteValues
  .SaveAs ThisWorkbook.Path & "\QT_" & _
  Format(Date, "yymmdd") & ".csv", xlCSV
  .Close False
End With
Application.CutCopyMode = False

というようなコードで、コピーできると思います。

【31820】Re:Webクエリで取り込んだデータを一定時...
発言  フジオ  - 05/11/30(水) 15:46 -

引用なし
パスワード
   ありがとうございます。
csvファイルのコピーが出来たのを確認しました。
このマクロを一定時間ごとに自動で動かしたいと思っています。
検索したところOnTimeメソッド(?)を使用すればよさそうなのですが
そこのところも教えてもらえますでしょうか。

【31829】Re:Webクエリで取り込んだデータを一定時...
回答  Kein  - 05/11/30(水) 16:44 -

引用なし
パスワード
   実行回数にもよりますが、例えば↓のようにすると Ary_T を「実行した瞬間」から
5秒後,10秒後,15秒後に "Sheet1" の A2,A3,A4 セルに値を入力できます。

Sub Ary_T()
  Dim TAry As Variant
  Dim i As Long
 
  TAry = Array("00:00:05", "00:00:10", "00:00:15")
  For i = 0 To 2
   Application.OnTime Time + TimeValue(TAry(i)), "Test_T"
  Next i
End Sub

Sub Test_T()
  With Sheets("Sheet1")
   .Activate
   .Range("A65536").End(xlUp).Offset(1).Value = _
   Format(Now(), "yyyy.m.d.hh.mm.ss")
  End With
End Sub

実時間を指定するなら Ary_T のコードを

  TAry = Array("18:00:00", "18:30:00", "19:00:00")
  For i = 0 To 2
   Application.OnTime TimeValue(TAry(i)), "Test_T"
  Next i

というようにします。これを参考にして、組み立ててみて下さい。

【31845】Re:Webクエリで取り込んだデータを一定時...
質問  フジオ  - 05/11/30(水) 23:27 -

引用なし
パスワード
   少しずつ完成に近づいています。ありがとうございます。

実時間を指定する際のコードですが

  TAry = Array("00:00:00", "06:00:00", "12:00:00", "18:00:00", "00:00:00", "06:00:00", "12:00:00", "18:00:00", "00:00:00")
  For i = 0 To 8
   Application.OnTime TimeValue(TAry(i)), "Test_T"
  Next i

こんな感じで記述するとマクロを実行してExcelを起動してる間は
3回目の0時になるまで動くと理解していいのでしょうか?
それとも5時から起動したら6時から開始するという意味になりますか?

上書きする時にメッセージを表示させないで上書きする方法を質問しようと
思いましたが
Sub Test_T()
 Worksheets("Sheet1").QueryTables(1).ResultRange.Copy
With Workbooks.Add(xlWBATWorksheet)
  .Worksheets(1).Range("A1").PasteSpecial xlPasteValues
Application.DisplayAlerts = False  'この行を追加
  .SaveAs ThisWorkbook.Path & "\hujio" & _
Format(Date, "yy") & ".csv", xlCSV
  .Close False
End With
Application.CutCopyMode = False
End Sub
で解決しました。

何かおかしい部分があったら訂正をお願いします。

【31857】Re:Webクエリで取り込んだデータを一定時...
発言  Kein  - 05/12/1(木) 13:28 -

引用なし
パスワード
   >3回目の0時になるまで動くと理解していいのでしょうか?
>それとも5時から起動したら6時から開始するという意味になりますか?
時間の間隔を短くして、テストしてみれば分かります。そーいうことは
自分でやってみて確かめるのが一番よく分かるから。

【31882】Re:Webクエリで取り込んだデータを一定時...
お礼  フジオ  - 05/12/1(木) 20:28 -

引用なし
パスワード
   ▼Kein さん:
>>3回目の0時になるまで動くと理解していいのでしょうか?
>>それとも5時から起動したら6時から開始するという意味になりますか?
>時間の間隔を短くして、テストしてみれば分かります。そーいうことは
>自分でやってみて確かめるのが一番よく分かるから。
後者の意味でした。
問題はある程度解決できました。ありがとうございました!

8677 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free