VBAを利用してirvineを使ったダウンロード方法

このQ&Aのポイント
  • VBAを使ってirvineを利用し、指定した保存フォルダにダウンロードデータを保存する方法について教えてください。
  • 保存フォルダを指定してirvineを使ってダウンロードするシンプルな方法を教えてください。また、ジョブの完了を確認する方法も知りたいです。
  • irvineを利用してVBAから指定したURLの画像ファイルをダウンロードし、指定した保存フォルダに保存する方法を教えてください。保存が完了したかどうかも確認できる方法があれば教えてください。
回答を見る
  • ベストアンサー

irvineを利用してVBAからダウンロード

irvineを利用してターゲットの保存フォルダにダウンロードデータを入れたいだけなのですがどうやったらいいかわかりません。 保存フォルダ c:\保存フォルダ\ 対象ファイル 1.jpg~9.jpg 対象URL http://hogehoge.com/ Set shell = CreateObject("WScript.Shell") for i=1 to 9 Call shell.Run(Chr$(34) & "c:\irvine\irvine.exe" & Chr$(34) & " http://hogehoge.com/" & str(i) & ".jpg") next i ...しかし、どこで保存フォルダを設定するのやら、という感じです。 参照のサイトも見たのですが、意味がわかりません。 http://hp.vector.co.jp/authors/VA024591/doc/api.txt 保存場所を指定してダウンロードする、このやり方をシンプルに教えてください。 出来れば、ジョブが終わったか否かも確認できたらうれしいです。 参照サイト http://q.hatena.ne.jp/1159035157 なんとなくActiveXを使うとわかったのですが、フォルダの指定とか どれなのかさっぱりわからないです。 なにとぞお力添えお願いします

  • ssmx
  • お礼率86% (95/110)

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

> このやり方をシンプルに教えてください。 基本はこんな感じ。Folder プロパティーを使います。 Sub IrvineSample1()      Dim Irvine  As Object   Dim vineItem As Object      Set Irvine = CreateObject("Irvine.API")   Set vineItem = CreateObject("Irvine.Item")   vineItem.URL = "http://oshiete1.goo.ne.jp/qa1.html"   vineItem.Folder = "C:\test" '<--- ※ココ      Call Irvine.Current.AddItem(vineItem) End Sub > 対象ファイル 1.jpg~9.jpg > ジョブが終わったか否かも確認できたら 他アプリケーションとの連携は高度な問題なので、それなりの スキルが必要で、また「シンプル」に説明するのは難しい。 難解であっても API のドキュメントを理解しようと意志も必要 です。 ・・・といった愚痴っぽいのは横においておいて。 Irvine を手動操作して DL を停止させた場合までチェック してませんが、こんな感じ。コメント入れたので眺めてみて ください。 ' // 標準モジュール ' // Summary: Irvine で保存フォルダを指定し、ダウンロード Option Explicit Private Declare Sub Sleep Lib "kernel32.dll" ( _     ByVal dwMilliseconds As Long) Sub IrvineSample2()   ' Irvine の起動(参照)   On Error Resume Next   Dim Irvine  As Object   Set Irvine = CreateObject("Irvine.API")   If Err Then     MsgBox "Irvine を起動できません", vbCritical     Exit Sub   End If   On Error GoTo 0   ' とりあえずキューフォルダを Default に指定します   Irvine.CurrentQueueFolder = "Default"   ' DL アイテムのインデックスを保管しておくコレクション   Dim colItem        As Collection   Set colItem = New Collection   ' # Current.AddItem で DL アイテムを送信する際、   ' # インデックス(識別子)が返却されます。   ' # このインデックスを使って、後から DL アイテムの情報   ' # を調べることができます。   ' Irvine に DL アイテムキューを送信する   Dim i    As Long   For i = 1 To 9          ' DL アイテム各種プロパティーを設定します     Dim vineItem  As Object     Set vineItem = CreateObject("Irvine.Item")     With vineItem       ' ■ダウンロードファイルのURL       .URL = "http://hogehoge.com/" & CStr(i) & ".jpg"       ' ■個別で保存フォルダを指定する場合に指定する       .Folder = "C:\test"       ' ■別名で保存する場合に指定する       '.Filename = ""     End With     ' DL アイテムをキューに追加し、DL を開始する     Dim nIndex  As Long     nIndex = Irvine.Current.AddItem(vineItem)     ' nIndex = -1 のときは既に DL されているとみなし無視     If nIndex >= 0 Then       ' インデックスをコレクションに保管       colItem.Add nIndex       ' あまり無理をさせてはいけません。Irvine 側の       ' 受け入れ処理のため若干スリープ       Call Sleep(50&)     End If     ' 念のため開放     Set vineItem = Nothing      Next   ' DL 終了確認(待機処理)   Application.Cursor = xlWait   Dim bDownloading  As Boolean   Do     bDownloading = False          Dim vIndex  As Variant     For Each vIndex In colItem       With Irvine.Current.Items(CLng(vIndex))         If Not .Error And Not .Success Then           bDownloading = True           Exit For         End If       End With     Next     DoEvents     ' CPUを VBA で占有しないよう1000ミリ秒=1秒スリープ     ' VBA のせいで DL 速度落ちたらアレなので     Call Sleep(1000&)   Loop While bDownloading   ' 各種オブジェクトの開放   Application.Cursor = xlDefault   Set Irvine = Nothing   Set colItem = Nothing   AppActivate Application.Caption   MsgBox "終了したっぽい (´ω`* )", vbInformation End Sub

ssmx
質問者

お礼

ありがとうございました!! 適当に返事を返すのは失礼でして、理解に励みました。 最初もAPIも理解の努力をしたのですが、例文が無くさっぱりだったんですが... まず、上段の方はOKでした! これは完璧に理解できました。 下段の方は、理解に少々時間がかかりましたが、大体わかりました。 なぜか、 Application.xxx はことごとくエラーだったのです(何故だろーー)が、それ以外のところも 問題なく動きました。 VBAあがりで、VBのVの字もわからない私です。 Private Declare Sub Sleep Lib "kernel32.dll" ( _     ByVal dwMilliseconds As Long) とか、 AppActivate Application.Caption とか。 だけど、かなりわかりやすく、脱帽です! お時間かけて書いていただき本当にありがとうございました。 感謝!感謝!本当に感謝でした。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> Application.xxx > はことごとくエラーだったのです(何故だろーー)が、それ以外のところも > 問題なく動きました。 VBA ではなく、Excel VBA、Access VBA などと表記して下さい。 質問タイトルに VBA とだけあったので、一番普及しているであろう Excel VBA で #1 のソースを書いてます。 VBA と言えば一般的に Microsoft の Office 製品に搭載されているものを 意味しますが、Excel, Word, Access, etc... それぞれのアプリケーション によって若干ソースが変わってくる部分がでてきます。 また、単に VB と言った場合でも VB6 なのか、VB.NET なのかでソースは 全く別物になってきます。 > Private Declare Sub Sleep Lib "kernel32.dll" ( _ >     ByVal dwMilliseconds As Long) 「指定した時間待機(ウェイト処理)」する Win32 API というライブラリの コマンドを使いますという宣言文です。 今回の Irvine 連携は、非同期処理になります。したがって、   「あれやれ、これやれ・・それキュー連続発射」 と投げっぱなしでは良くないんですよ。 適当にウェイトを挟んで Irvine 側でそれをさばく間を設けてやらないと、 Irvine が受けきれずエラーを起こします。  # まあ、9個ぐらいなら全然問題にならないですけど > AppActivate Application.Caption AppActive は、ウインドウタイトルに指定した文字列を含むウインドウを アクティブにします。 先述のとおり、Excel VBA で書いてます。したがって、Application とは Excel のこと。AppActivate に渡している文字列は、Excel の ウインドウタイトルですから、「Excel をアクティブにせよ」ということ ですね。 Irvine を起動したときに、ウインドウのフォーカスがそちらに遷移して しまいますよね? 処理終了の通知として最後に MsgBox を表示させてますが、Excel に ウインドウフォーカスを戻してから表示しないと、タスクバーで点滅する だけで、通知にならないからです・・

ssmx
質問者

お礼

ご丁寧にありがとうございます 使っているのはAccess VBAで、VBAでも変わってくるんですね。 というか、その可能性は感じてましたが、今回には影響ないと思いまして...すみません 確かに、アクセスからテーブルをなめてIrvineに送ったらえらいことになりそうです。とても勉強になりました。 ご丁寧にありがとうございました!!

関連するQ&A

  • Irvineで同じファイル名のファイルをDL

    Irvineで同じファイル名のファイルをDL つまり あるサイトにhttp://hogehoge.com/hoge1/1.jpgと言うファイルがあったとして、 また別のページでhttp://hogehoge.com/hoge2/1.jpgという別のファイルがあったとします。(hoge1とhoge2が違う) その場合、Irvieでは同じフォルダにDLしようとすると、上書き確認を聞かれますが、 そういう場合に別のファイル名で保存する方法はありますか? 例えば1.jpgを別のファイル名にしてもいいです。

  • Irvine のダウンロードについて

    irvineを使って、同一ページ内の画像一括ダウンロードをしていました。 しかし、期待するダウンロードができなくなりました。 現象としては、保存フォルダを見ていると  ・該当ファイルが作成される  ・すぐに、削除される。 の繰り返しが行われ、結局ファイルはひとつも残っていません。 アンインスール(レジストリ削除)もしてみましたが、 うまくいきません。 ちなみに、最新の 1.1.2です。

  • Irvine

    前に質問させていただき、Irvineを進められ早速使っているものです。 Irvineについての質問なのですが、 IrvineをDドライブにインストールしたのにもかかわらず、ダウンロードしたものはCドライブの方に保存されます。 保存先のフォルダを設定する時、 C:\Documents and Setting\.....\フォルダ名 と表示され、これを D:\download\フォルダ名 としてもDドライブにDLされません。 どうすればDドライブの方に移せるのでしょうか。

  • irvineで

    irvine でファイルをダウンロードするときに保存先を指定してダウンロードで保存してるんですが。 選べるファイルの種類が常にAllだけなんですけど、ZIPなどで保存するにはどうすればいいんですか?

  • irvineで複数URL登録時の質問

    irvineで複数URLを登録して画像をダウンロードするときのことなんですが、例えば http://oshiete001/01.jpg http://oshiete002/01.jpg で登録すると両方とも01.jpgで保存されてしまうため最初の画像が上書きされてしまいます。 これをoshiete001,oshiete002等のフォルダごとに分けて保存することは可能ですか?

  • irvineで動画のダウンロードができません(ブラウザからはできます)

    すみませんが、教えてください。 ブラウザでは右クリック→「対象をファイルに保存」でダウンロードできる動画が、irvineではダウンロードができません。 サイズの小さいごみファイルがダウンロードされてしまいます。 ダウンロード先は、有料の会員制サイトです。 irvineの設定で、User-Agentを、「Mozilla/4.0 (compatible; MSIE 6.0; Win32)」にしたり、 Refererを「index.html」や「URLと同じ」にしても結果は同じでした。 どなたかご教授をよろしくお願いいたします。

  • IrvineでDLするファイルが皆、「html」ファイルに。

    IrvineでjpgファイルをDLして保存フォルダーを後で 見てみると皆、「html」ファイルになってることがあるので すが、これって何とかjpgファイルでDLすることってできない んでしょうか?又、何でhtmlファイルになるのかわかりません。 一つ、一つ、右クリックで「名前を付けて保存」でやるとjpgファイル としてDLできるのですが・・・。

  • Irvineの導入方法(Firefox)

    以前Irvineをよく利用していたのですが、ブラウザをIEからFirefoxに乗り換えたため、利用できなくなっていました。 そこでFirefoxの拡張機能により使えるようになると知ったのでインストールしましたが、設定の方法がよく分かりません。下記のサイトに書いてある、 「ircom.exeのパス」にIrvineをインストールしたフォルダにあるircom.exeのパスを指定してください。 というのはどういう意味なのでしょうか。 参考サイト:http://multi.nadenade.com/leafy/Mozilla/Irvine/

  • 画像一括ダウンロードできるフリーソフトIrvineの使い方がわかりませ

    画像一括ダウンロードできるフリーソフトIrvineの使い方がわかりません IE8から右クリでURLを送信するまではわかるんですけども htmlなどもはいってしまってぜんぜんわかりません またダウンロードも失敗します それに1こずつしかダウンロードできないし速度もおそいです これなら普通に画像を保存したほうがはやいようなきがするのですが いろんな解説サイトみてもぜんぜんわからないので質問させていただきました jpgなどだけダウンロードする方法はありませんか? 参考サイトはほとんどみたんですけどわからなかったのでわかるひといたらおしえてください もしリンク先の画像までダウンロードできるもので使いやすいフリーソフトがあればおしえてください firefoxのアドオンの画像ダウンロードのものがあるんですけどそれも上から50こまでみたいなので使い勝手がわるいです

  • vbaで画像ファイルを開き、サイズを変更して保存

    vbaで画像ファイルを開き、その後サイズを変更して保存することは出来るのでしょうか? ペイントで画像を開くのは Sub test() MyFileName = "C:\セット.jpg" Shell "C:\WINDOWS\system32\mspaint.exe" & " " & Chr(34) & MyFileName & Chr(34), vbNormalFocus End Sub これで出来たのですが その後、サイズ変更→ピクセル→ 水平方向 300 垂直方向 225 を指定して保存したいのですが そこまでVBAで可能でしょうか?

専門家に質問してみよう