• ベストアンサー

VBAでHTTP(又はFTP)を使う方法について

「ファイル名.vba」というファイルをダブルクリックするだけで、特定のサイト(http/ftp上)のあるファイルをデスクトップ上に持ってくるシェルスクリプトを考えています。 単純にスクリプトだけで実現したいので、何かソフトをインストールし、スクリプトの中でそれを実行する…というのは考えていません。 なんか参考になるサンプル、もしくはホームページご存知でしたら宜しくお願いします。(VBAは初心者です) ちなみに、OSは、win2000です。

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

  • ベストアンサー
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.6

IE6sp1でない場合 《ファイルのダウンロード》ダイアログが出ないで いきなり 《名前を付けて保存》ダイアログが出るかも。 それと、 WshShell.SendKeys "%i" WshShell.SendKeys "{DOWN}{UP 10}{DOWN}{ENTER}" WshShell.SendKeys "%s" このままだと、キー入力スピードに Windowsが追いつけない場合は WScript.Sleep(100) (0.1秒停止という意味) を足して WshShell.SendKeys "%i" WScript.Sleep(100) WshShell.SendKeys "{DOWN}" WScript.Sleep(500) WshShell.SendKeys "{UP 10}{DOWN}{ENTER}" WScript.Sleep(100) WshShell.SendKeys "%s" とこんな感じにするといいかも。 Windows2000に付属している VBScriptエンジンは Windows Script Hostといういわれている言語の1つで 他にJScriptというJavaScriptとそっくりなエンジンも Windows2000に搭載されています。(拡張子はjs) Windows script Host は現在バージョンは5.6です。 ↓こちらからダウンロードできます。  マニュアルもここから入手可能です。

参考URL:
http://www.microsoft.com/japan/msdn/scripting/default.asp
kterm32
質問者

お礼

たくさんのサンプルを書いてくださりありがとうございました。

その他の回答 (5)

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.5

最後に WshShell.SendKeys "%s" の次の行に act("名前を付けて保存") WshShell.SendKeys "%i" WshShell.SendKeys "{DOWN}{UP 10}{DOWN}{ENTER}" WshShell.SendKeys "%s" 挿入します。 するとデスクトップに保存されるようになります。 %i は《保存する場所》を選択し {DOWN} でプルダウンを開き、 {UP 10} で一番上であろうところへ移動し、 {DOWN} で上から2番目の《デスクトップ》が選択され(私の場合) {ENTER} で選択を確定します。 最後の %s が《保存》です。

kterm32
質問者

お礼

たくさんのサンプルを書いてくださりありがとうございました。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.4

ANo.#2のスクリプトに 'IE6Sp1の場合 act("ファイルのダウンロード") WshShell.SendKeys "%s" sub act(s) for j=0 to 600 WScript.Sleep(100) 'ダウンロードダイアログの確認 if wshShell.AppActivate(s) then exit for elseif j=599 then '1 分待ってもウィンドウが開かない場合はあきらめる IE.Quit WScript.Quit end if next end sub これを追加すると、 「ALT」+「s」が入力されて 「名前を付けて保存」ダイアログが出ます。

kterm32
質問者

お礼

たくさんのサンプルを書いてくださりありがとうございました。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

ちなみに、 IE.Visible = true を IE.Visible = false とすると、InternetExplorerが見えないので 精神衛生上いいかもしれません。

kterm32
質問者

お礼

たくさんのサンプルを書いてくださりありがとうございました。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.2

例えば、 dim objArgs dim WshShell Set objArgs = WScript.Arguments Set WshShell = WScript.CreateObject("WScript.Shell") dim IE Set IE = WScript.CreateObject("InternetExplorer.Application") 'IEを表示 IE.Visible = true Do While IE.Busy Wscript.Sleep 10 Loop 'IE5.5 のインストーラーをダウンロード IE.Navigate "http://www.mkk.ed.jp/gard/gard.htm の、2 バージョン4の方は,まずバージョン5にしてからバージョン6にします。(exeファイル)" これをittochan.vbs として実行すると、 ie5setup.exe のダウンロードダイアログが出るので、 SendKeys メソッドでキーを自動入力させます。

kterm32
質問者

お礼

たくさんのサンプルを書いてくださりありがとうございました。

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.1

>単純にスクリプトだけで でしたら、VBScript の ****.vbs ですね。 本家です。 ↓

参考URL:
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/vtoriVBScript.asp
kterm32
質問者

お礼

おはようございます。 短い時間にたくさんの回答をありがとうございます。 今時間がないので、またあとでじっくりと見たいと思います。 とりあえず、感謝の気持ちが伝えたかったので…。 どうもありがとうございました!

kterm32
質問者

補足

おっしゃる通りです、やさしくク指摘して頂きありがとうございます。 vbsの間違いです…。(^^; さっそく、提示していただいたサンプルに少しずつ手を加えながら 実行しましたら、ほぼ希望通りのことができるようになりました。 あまりメジャーでないような気がしますが、wshって何気に便利ですね…。 教えていただいたURLをもっと読んでさらに勉強したいと思います。 この度はありがとうございました。

関連するQ&A