「input type=file 」のファイルダイアログの開き方について 削除
Message#4 2015年4月13日(月)08時50分 From: DSC_渡辺 |
ファイルダイアログへのファイルパスの入力と開くボタンの自動操作は以下のようなVbscriptを使って実現しています。 ''ファイルダイアログ表示待ちの為に待機 WScript.sleep(5000) Set ObjExcel = WScript.CreateObject("Excel.Application") ''ファイルダイアログのハンドラ取得 DialogHnd = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowA"", ""JCC"", ""#32770"", """ & ファイルダイアログのタイトル & """)" ) ''ファイルダイアログの各入力項目のハンドラ取得 EditHnd1 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & DialogHnd & "," & 0 & ",""ComboBoxEx32""," & vbNullString & ")") EditHnd2 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & EditHnd1 & "," & 0 & ",""ComboBox""," & vbNullString & ")") EditHnd3 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & EditHnd2 & "," & 0 & ",""Edit""," & vbNullString & ")") ''ファイルパスを入力項目にセット ret = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""SendMessageA"", ""JJJJC"", " & EditHnd3 & "," & &HC & "," & 0 & ",""" & ファイルパス & """)") ''開くボタンのハンドラ取得 BtnHnd = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & DialogHnd & "," & 0 & ",""Button"",""開く(&O)"")") ''開くボタンのコントロールID取得 CtrID = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""GetDlgCtrlID"", ""JJ""," & BtnHnd & ")") ''開くボタンをクリック ret = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""SendMessageA"", ""JJJJC"", " & DialogHnd & "," & &H111 & "," & CtrID & ",""" & BtnHnd & """)") ObjExcel.Quit Set ObjExcel = nothing WScript.Quit 以上のVbscriptをEXCELVBAから起動し、Vbscriptの中のファイルダイアログ表示待ちの間に「ObjIE.document.forms("フォーム名").Item("XXX").Click」でファイルダイアログを開いています。 ファイルダイアログへのファイルパス入力と開くボタンの自動操作には成功し、Web画面のテキストにもファイルパスが表示されますが、その後のsubmitボタンクリックで「-2147352319 オートメーション エラーです。」のエラーが発生しています。 同じ参照ボタンを手操作でクリックし、ファイルダイアログを開いた状態の時にファイルパス入力と開くボタンクリックをVbscriptで行ってから、EXCELVBAでsubmitボタンクリックを実行した場合は正常に動作しました。 ファイルダイアログを「〜.click」で開いてはいけないということでしょうか? それともVbscriptでの入力がいけないのでしょうか? どなたか判る方は回答をお願いします。 |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。