【Excel-VBA】ファイル選択のダイアログボックスを操作するWindows

①API宣言
Declare PtrSafe Function FindWindow Lib “user32” Alias “FindWindowA” ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

‘ 編集部分を取得するため
Declare PtrSafe Function FindWindowEx Lib “user32” Alias “FindWindowExA” ( _
ByVal hwndParent As LongPtr, _
ByVal hwndChildAfter As LongPtr, _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

‘ 編集部分に文字列を送るため
Declare PtrSafe Function SendMessage Lib “user32” Alias “SendMessageA” ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As LongPtr

Sub sample()

‘ファイル選択ダイアログボックスのハンドルを捕まえる
Dim handle As Long
handle = FindWindow(“#32770”, “開く”)

‘捕まえたハンドル(handle)から入力ボックス(ファイル名が入るところ)のハンドルを捕まえる
Dim hInputBox As Long
hInputBox = FindWindowEx(handle, 0&, “ComboBoxEx32”, “”)
hInputBox = FindWindowEx(hInputBox, 0&, “ComboBox”, “”)
hInputBox = FindWindowEx(hInputBox, 0&, “Edit”, “”)
Call SendMessage(hInputBox, &HC, 0, ByVal “*ファイルPATH“)

‘捕まえたハンドル(handle)から”開く”ボタンのハンドルを取得する
Dim hButton As Long
hButton = FindWindowEx(handle, 0&, “Button”, “開く(&O)”) ‘開くボタン
Call SendMessage(hButton, &HF5, 0, 0&) ‘ボタンをクリックする

End Sub

こちらのブログから転記させて頂きました。とても助かりました

コメントを残す

メールアドレスが公開されることはありません。