
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. …
保存場所を指定してダウンロードする、このやり方をシンプルに教えてください。
出来れば、ジョブが終わったか否かも確認できたらうれしいです。
参照サイト
http://q.hatena.ne.jp/1159035157
なんとなくActiveXを使うとわかったのですが、フォルダの指定とか
どれなのかさっぱりわからないです。
なにとぞお力添えお願いします
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
ありがとうございました!!
適当に返事を返すのは失礼でして、理解に励みました。
最初もAPIも理解の努力をしたのですが、例文が無くさっぱりだったんですが...
まず、上段の方はOKでした! これは完璧に理解できました。
下段の方は、理解に少々時間がかかりましたが、大体わかりました。
なぜか、
Application.xxx
はことごとくエラーだったのです(何故だろーー)が、それ以外のところも
問題なく動きました。
VBAあがりで、VBのVの字もわからない私です。
Private Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
とか、
AppActivate Application.Caption
とか。
だけど、かなりわかりやすく、脱帽です!
お時間かけて書いていただき本当にありがとうございました。
感謝!感謝!本当に感謝でした。
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 に
ウインドウフォーカスを戻してから表示しないと、タスクバーで点滅する
だけで、通知にならないからです・・
ご丁寧にありがとうございます
使っているのはAccess VBAで、VBAでも変わってくるんですね。
というか、その可能性は感じてましたが、今回には影響ないと思いまして...すみません
確かに、アクセスからテーブルをなめてIrvineに送ったらえらいことになりそうです。とても勉強になりました。
ご丁寧にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Windows 10 壁紙フォルダが表示されない 1 2022/11/16 21:58
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) VBAでファイル名を指定して保存するとき 4 2023/03/26 21:55
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Windows 10 ネットからファイルをデスクトップにダウンロードする際、既存のファイルの並びが崩れてしまう 4 2022/04/19 08:20
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでほかのアプリケーシ...
-
Excel VBAで作成したマクロをxl...
-
ファイルのダウンロード保存先...
-
読み取り専用ファイルを上書き...
-
Pivot table で集計されたデー...
-
vlan internal allocation poli...
-
teratarmでコマンド入力すると...
-
WindowsからSSHでサーバーにあ...
-
TXTファイルを上書き保存する前...
-
共有しているファイルを削除し...
-
YAHAMA RTXシリーズのコマンド...
-
スクリーンセイバー
-
ファイルを閉じるコマンドを教...
-
Ciscoルーター 対向機器のIPア...
-
ファイルパスのチルダの意味
-
Webページが表示されない場合の...
-
困っていますAR450SでPPPoEブリ...
-
BurnでDVDが焼けません。
-
show spanning-tree mst
-
ショットナビクレスト ゴルフ場...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでファイルの最終更新...
-
Excel VBAでほかのアプリケーシ...
-
Excel VBAで作成したマクロをxl...
-
VBAで、強制保存してブックを閉...
-
読み取り専用ファイルを上書き...
-
AccessVBAでレポートをPDFで出力
-
Pivot table で集計されたデー...
-
EclipseでJavaScriptファイルの...
-
エクセルで「名前を付けて保存...
-
VBAでPDF作成をしたあと、指定...
-
VBScriptで日本語が変です
-
【Excel VBA】自動的にバックア...
-
VBScriptでのSaveAsについて
-
webページの特定の部分だけ消し...
-
タイトルバーやメニューバーの...
-
ASPでファイルを保存するダイア...
-
vbaでIEの名前を付けて保存(A)...
-
ExcelVBAでデスクトップのPATH...
-
エクセル:マクロ:保存時に連...
-
Corel Digital Studioの動画をS...
おすすめ情報