
VBA初心者です。
VBAで自動化を進めていて、ダイアログでのファイル名入力で行き詰まっています。
実行したい事は、ファイル名を入力し、Webからダウンロードしたものを保存する動作です。
困っているのはAPI宣言文でコンパイルエラーになり、肝心の実行まで至っていないことです。
「VBAでファイル選択ダイアログを自動操作する」のWebを見つけ、その通り組み込んだところ、最初のAPI宣言のところでコンパイルエラーになり困っています。
どのように直したら良いのか教えてください。よろしくお願い致します。
1.エラー内容
下記のAPI宣言文で、FindWindowの箇所で「コンパイルエラー。ユーザ定義型は定義されていません」と表示される。
Webにある記述だけだとエラーになったので、FindWindowEx、FindWindow、SendMessageの3つ共、Functionの前にPrivate Declareを追加しています。
修正する箇所等、教えてください。
2.コード
'----------------- API宣言部分 -----------------
Private Declare Function FindWindowEx Lib "USER32.dll" _
Alias "FindWindowExA" ( _
ByVal hWndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, _
ByVal lpszWindow As String) As Long
Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
'----------------- API宣言部分 -----------------
Private Declare Function SendMessage Lib "USER32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Any) As Long
'----------------- 処理部分 -----------------
Dim hInputBox As Long
Dim hButton As Long
Dim hWindow As Long
hWindow = FindWindow("#32770", "名前を付けて保存")
hInputBox = FindWindowEx(hWindow, 0&, "ComboBoxEx32", "")
hInputBox = FindWindowEx(hInputBox, 0&, "ComboBox", "")
hInputBox = FindWindowEx(hInputBox, 0&, "Edit", "")
hButton = FindWindowEx(hWindow, 0&, "Button", "保存(&S)")
'----------------- 処理部分 -----------------
'ファイルパス入力'
Call SendMessage(hInputBox, &HC, 0, DLfile) 'DLfile変数 ダウンロードするファイル名
'ボタン押下'
Call SendMessage(hButton, &H6, 1, 0&) 'ボタンをアクティブにする
Call SendMessage(hButton, &HF5, 0, 0&) 'ボタンをクリックする


No.2ベストアンサー
- 回答日時:
拾ってきたサンプルが間違ってますね。
LongPtr → Long
Webに転がっている情報は玉石混交ですので、検索したら必ず複数の情報源で確認しましょう。

No.1
- 回答日時:
>LongPtr
どこからサンプルを拾って来たのでしょう?
VBAを検索文字に加えておかないと、C言語のサンプルだったりします。
回答ありがとうございます。
サンプルは以下URLサイト「VBAでファイル選択ダイアログを自動操作する」から持ってきました。
http://rabbitfoot.xyz/file-dialog-autmation/
初心者でAPIの宣言文については良く分かりません。
教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
WindowsのOutlook を VBA から...
-
【ExcelVBA】値を変更しながら...
-
ExcelのVBAコードについて教え...
-
VBAでCOPYを繰り返すと、処理が...
-
マクロの記録を使用したマクロ...
-
vba textboxへの入力について教...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
VBAから書き込んだ条件付き初期...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
[Excel VBA]特定の条件で文字を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
ソケット通信で同時受信の制限?
-
式はメソッドではありませんと...
-
TCPサーバ bind関数のエラーに...
-
EXCEL VBA API宣言でコンパイル...
-
SumIFsとDateSerial vba
-
名前が二重に定義されています
-
VBSでIEを起動し、拡大率を変更...
-
CreateObjectの同時実行時について
-
golang 空文字判定について
-
vbscriptの変数宣言
-
ダブルクォーテーションの吐き出し
-
メール一括送信VBAへのアドレス...
-
VBSについて
-
VBSにてサーバー中のエクセルフ...
-
ネットワーク上のPCのIPとホス...
-
C# try-catch でcatchに飛ばす方法
-
画面のリフレッシュを意図的に...
-
CreateObject("Excel.Applicati...
-
ASP内で他のASPファイルを読み...
おすすめ情報