• ベストアンサー

一定時間ごとに更新

以前 http://okwave.jp/qa3460010.html で質問させていただいたものです。 一定時間ごとに首都高速の渋滞データを取れるようなプログラムについて質問いたしました。 そこでanotherone様が作ってくださったプログラム http://beauty.geocities.jp/chirinuruwowahe/VBS_SaveImage.txt なのですが、一定時間ごとのデータは取れるものの、データが更新されておらず、同じデータが得られてしまいます。(渋滞情報の中身が不変) そこでプログラムを改造させていただき、道路交通情報センターが更新した最新の情報を取得できるようにしようと試みたのですが、私の知識では到底及びも着かないものであったため、再度質問させていただきました。分かる方いらっしゃいましたら、ご回答お願いいたします。 (可能であればanotherone様の再回答を願います)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

'======================================================== URL = "http://www.jartic.or.jp/traffic/highway/kousoku/rhp0001.gif" 'http://www.jartic.or.jp/traffic/highway/kousoku/rhp0001.html Path = "画像.gif" MACHI = 1000 * 60 * 5 '実行の間隔(ミリ秒) 1,000ミリ秒*60*5 = 5分間隔(300,000ミリ秒) CNT = 12 * 8 '実行回数を指定  5分*12回 1時間 8時間なら 12 * 8 '======================================================== Set myIE = CreateObject("InternetExplorer.Application") myIE.Navigate URL FLD = Replace(WScript.ScriptFullName, WScript.ScriptName, "\") Set CDOMessage = CreateObject("CDO.Message") For i = 1 to CNT Set BodyPart = CDOMessage.AddAttachment(URL) TT = Year(Now) & "_" & Month(Now) & "_" & Day(Now) & "_" TT = TT & Hour(Now) & "_" & Minute(Now) & "_" & Second(Now) BodyPart.SaveToFile FLD & TT & Path Set BodyPart = Nothing WScript.Sleep(MACHI) myIE.Refresh Do Until myIE.Busy = False WScript.Sleep(500) Loop Next myIE.Quit Set myIE = Nothing Set CDOMessage = Nothing Msgbox "fin" これに修正させてください

Fishermans
質問者

お礼

anotherone様、再度のご回答まことにありがとうございます。 わざわざ私のようなしがない学生にご協力くださいまして、感謝以外にございません。 私もanotherone様のようにプログラミングに詳しくなるよう、参考書などを読み漁り覚えていきたいと思います。 お手数をおかけしてスミマセンでした、ありがとうございました。

Fishermans
質問者

補足

anotherone様のプログラムが理想通りに動いてくれました。 今一度ご協力くださった皆様に御礼申し上げます。 本当にありがとうございましたっ!

その他の回答 (3)

回答No.3

'======================================================== URL = "http://www.jartic.or.jp/traffic/highway/kousoku/rhp0001.gif" Path = "画像.gif" MACHI = 1000 * 60 * 5 '実行の間隔を ミリ秒で指定  1,000ミリ秒*60*5 = 5分間隔(300,000ミリ秒) MACHI = 1000 * 60 * 5 'テストで2秒ごとに実行 実際は上の行を削除してください CNT = 12 * 1 '実行回数を指定  5分*12回 1時間 8時間なら 12 * 8 '======================================================== FLD = Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "\" Set CDOMessage = CreateObject("CDO.Message") For i = 1 to CNT Set BodyPart = CDOMessage.AddAttachment(URL) TT = Year(Now) & "_" & Month(Now) & "_" & Day(Now) & "_" TT = TT & Hour(Now) & "_" & Minute(Now) & "_" & Second(Now) BodyPart.SaveToFile FLD & TT & Path WScript.Sleep(MACHI) Next Msgbox "fin" Function FileSaveAs(Path) On Error Resume Next Set FileSaveDlg = CreateObject("SAFRCFileDlg.FileSave") On Error GoTo 0 If IsEmpty(FileSaveDlg) Then FileSaveAs = Path Exit Function End If FileSaveDlg.FileName = Path FileSaveDlg.FileType = "すべてのファイル(*.*)" If FileSaveDlg.OpenFileSaveDlg() Then FileSaveAs = FileSaveDlg.FileName End Function これに変えてください 5分で画像が変化したことを確認しました すいませんでした

  • gsx_rider
  • ベストアンサー率40% (53/130)
回答No.2

ちょっとまだダメなようです‥ すいません

  • gsx_rider
  • ベストアンサー率40% (53/130)
回答No.1

vbsは弄った事ないんで全くわかりませんが‥ このままだとキャッシュを読み込んでるみたいなんで 画像ファイルを作成する時に読む込むようにしてみました 時間は5分に一回に設定してあります 下のコードをメモ帳にコピーしてVbsSaveImage.vbsの名前でフォルダに保存して下さい   anotherone様 少々改造させて頂きました '======================================================== URL = "http://www.jartic.or.jp/traffic/highway/kousoku/rhp0001.gif" Path = "画像.gif" MACHI = 1000 * 60 * 5 '実行の間隔を ミリ秒で指定  1,000ミリ秒*60*5 = 5分間隔(300,000ミリ秒) 'MACHI = 1000 * 3 * 1 'テストで2秒ごとに実行 実際は上の行を削除してください CNT = 12 * 1 '実行回数を指定  5分*12回 1時間 8時間なら 12 * 8 '======================================================== For i = 1 to CNT FLD = Replace(WScript.ScriptFullName, WScript.ScriptName, "") & "\" Set CDOMessage = CreateObject("CDO.Message") Set BodyPart = CDOMessage.AddAttachment(URL) TT = Year(Now) & "_" & Month(Now) & "_" & Day(Now) & "_" TT = TT & Hour(Now) & "_" & Minute(Now) & "_" & Second(Now) BodyPart.SaveToFile FLD & TT & Path WScript.Sleep(MACHI) Next Msgbox "fin" Function FileSaveAs(Path) On Error Resume Next Set FileSaveDlg = CreateObject("SAFRCFileDlg.FileSave") On Error GoTo 0 If IsEmpty(FileSaveDlg) Then FileSaveAs = Path Exit Function End If FileSaveDlg.FileName = Path FileSaveDlg.FileType = "すべてのファイル(*.*)" If FileSaveDlg.OpenFileSaveDlg() Then FileSaveAs = FileSaveDlg.FileName End Function

Fishermans
質問者

お礼

gsx_rider様、ご回答ありがとうございます。 これを機に、私もvbsのプログラミングに興味を持ち始めました。 皆様のようにすらすらとプログラムが書けるようになる事を目標としたいと思います。 未だどの構文がどう意味を持っているのかははっきりとしませんが、皆様に少しでも近づけるよう、日々精進したいと思います。 ありがとうございました。

関連するQ&A