タイトルの通りですが、VBAでダウンローダーを作りたいので教えてください。
某サイトのSWFファイル(連番)をダウンロードします。
For i = 1 To 20 の後から「13 型が一致しません。」と出てデバッグ画面になりますがどこを直せばよいでしょうか?
Option Explicit
Private Declare Sub sleep Lib "kernel32" Alias "Sleep" (ByVal ms As Long)
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Sub startd1()
Dim lngRes As Long
Dim strURL As String
Dim strPath As String
Dim i As Long
Dim VOLname As Long
Dim IMGname As Long
VOLname = InputBox("Which volume,", "Input that volume number", 0)
IMGname = 1
For i = 1 To 20
strPath = "C:\Users\aaa\download\vol" & VOLname & "\" & IMGname & ".swf"
strURL = "https://bbb.com/vol" & VOLname & "/ccc/" & IMGname & ".swf"
lngRes = URLDownloadToFile(0, strURL, strPath, 0, 0)
sleep 3000
If lngRes = 0 Then
MsgBox "ダウンロード完了!"
MsgBox IMGname
Else
MsgBox "ファイルをダウンロードできませんでした"
MsgBox IMGname
End If
IMGname = IMGname + 1
Next i
End Sub
No.1ベストアンサー
- 回答日時:
こんにちは
>For i = 1 To 20 の後から「13 型が一致しません。」
型のエラーが返される可能性としてAPIがbitバージョンの違いで
エラーになっているのではないでしょうか?
これは、環境が分からないので合っていないかもですが、
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
を
Public Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, ByVal szFileName As String, _
ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
のようにすると結果はどうでしょう。
また、ご質問部分ではありませんが、
Dim VOLname As Long
VOLname = InputBox("Which volume,", "Input that volume number", 0)
ここにはおそらく問題があります。
キャンセルボタンを押した時エラーが返されると思います。
また、Long型では対応できないのでStringで受け、
If StrPtr(VOLname) = 0 Then Exit Sub ’キャンセル時終了
If IsNumeric(VOLname) Then 数値ならば、、、
みたいにする必要があると思います。
もしくは、Application.InputBoxメソッドを使用してType:=1に設定するとか、方法がありますが、、、
ただ、後にパスに入れるのでStringで良いような。。
ご質問以外の部分なので、この辺りはご自身で調べてみてくださいね。
ご回答ありがとうございます。
PtrSafe Functionは64bit版の書き方なのですね。
直してみてエラーなく動き始めましたが、次はセキュリティの問題なのか、ダウンロードしたファイルが見当たらない問題に当たっています。
下の追記も含めいろいろ試してみます。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでFormat がうまく使えない
-
Debug Assertion Failed?
-
LTspiceのTime Stepエラーについて
-
不明なソフトウェア例外(0xe06...
-
Subversionのリポジトリでが壊...
-
vbaでファイルを開くパス名に変...
-
エラーコード 70 「書き込み...
-
エクセルのエラーについて
-
EXCELを開くとエラーがでます。
-
バッチファイルで発生するエラ...
-
NET USE コマンドでエ...
-
POV-Ray についての質問です!
-
シェルスクリプトの実行エラー...
-
C# HttpWebRequestのエラーにつ...
-
xmlドキュメントから別拡張子で...
-
UWSC初心者です。
-
Web.Config 構成ファイルのエラー
-
実行時エラー'1004': アプリケ...
-
iphone同期時にエラーが出ます
-
ASP.NETでのランタイムエラー?...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Debug Assertion Failed?
-
VBAでFormat がうまく使えない
-
NET USE コマンドでエ...
-
Excel ファイルに保存すると実...
-
シェルスクリプトの実行エラー...
-
Web.Config 構成ファイルのエラー
-
ホームページビルダーの”全体の...
-
エラーコード 70 「書き込み...
-
vbaでファイルを開くパス名に変...
-
C# HttpWebRequestのエラーにつ...
-
ACCESS VBAのOpenForm書き方
-
VBAで印刷するとエラーになって...
-
POV-Ray についての質問です!
-
不明なソフトウェア例外(0xe06...
-
Access ADOで文字列を日付型へi...
-
WNetAddConnection*()の使い方
-
LTspiceのTime Stepエラーについて
-
bcpadがうまく実行できないので...
-
xmlドキュメントから別拡張子で...
-
VB2010ビルドできるが配...
おすすめ情報