dポイントプレゼントキャンペーン実施中!

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&) 'ボタンをクリックする

「EXCEL VBA API宣言でコンパイ」の質問画像

A 回答 (2件)

拾ってきたサンプルが間違ってますね。


LongPtr → Long

Webに転がっている情報は玉石混交ですので、検索したら必ず複数の情報源で確認しましょう。
    • good
    • 1
この回答へのお礼

Ptrを削除したらコンパイルエラーがでなくなりました。
早々に回答ありがとうございました。

お礼日時:2018/05/17 15:20

>LongPtr


どこからサンプルを拾って来たのでしょう?
VBAを検索文字に加えておかないと、C言語のサンプルだったりします。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
サンプルは以下URLサイト「VBAでファイル選択ダイアログを自動操作する」から持ってきました。
http://rabbitfoot.xyz/file-dialog-autmation/
初心者でAPIの宣言文については良く分かりません。
教えてください。

お礼日時:2018/05/17 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!