[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『IEとJavascriptで作られたシステムをVBAで動かす』(あや)
IEとjavascriptで作られたシステムを VBAから動かしています
【IE画面】------------------------------------
「(テキストボックス)」「参照」
「登録」「キャンセル」
---------------------------------------------- 【動き】 1 参照ボタンを押すと、エクスプローラが開きます 2 エクスプローラから必要なファイルを選択する 3 テキストボックスに、ファイルパスが表示される 4 登録ボタンを押すとシステム上にファイルが登録される
この動きをVBAから動かそうとしております (2 エクスプローラから必要なファイルを選択する は 手作業で進めようと思います)
【実際に動いているVBA】
’参照ボタンを押す For Each Obj In ObjIE.Document.forms(0)
If Obj.Name = "PathFileUpload" Then
Obj.Click Exit For End If
Next
’エクスプローラから必要なファイルを選択する(手作業)
’登録ボタンを押す Sleep 1000 For Each Obj In ObjIE.Document.getElementsByTagName("input")
If Obj.Name = "torokuImageButton" Then
Obj.Click Exit For End If
Next
ここで、問題となっているのは 登録ボタンを押すと テキストボックスに表示されているパスがクリアされるだけで 登録されない状態です
何か考えられることはありますでしょうか
< 使用 Excel:Excel2010、使用 OS:ウィンドウズサーバー2008 >
そもそも、ブラウザ併用の処理は、Excel標準を超えるコーディングなので、自力解決すべき難易度です。頑張って!
(???) 2016/04/11(月) 13:50
Option Explicit
Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function SendDlgItemMessage Lib "user32" Alias "SendDlgItemMessageA" (ByVal hDlg As LongPtr, ByVal nIDDlgItem As Long, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr
Private Const WM_COMMAND = &H111
Private Const WM_SETTEXT = &HC
Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private s As String
Sub test()
s = "hoge.txt" Dim IE As Object Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True IE.Navigate "URL"
While IE.busy Or IE.ReadyState <> 4 DoEvents Wend
With New Application .Workbooks.Open(ThisWorkbook.FullName) .[A1] = s .OnTime Now(), "Proc" End With
'参照ボタンを押す For Each Obj In ObjIE.Document.forms(0) If Obj.Name = "PathFileUpload" Then Obj.Click Exit For End If Next
'登録ボタンを押す For Each Obj In ObjIE.Document.getElementsByTagName("input") If Obj.Name = "torokuImageButton" Then Obj.Click Exit For End If Next
End Sub
Private Sub Proc()
Dim hDlg As Long
While hDlg = 0 DoEvents Sleep 1& hDlg = FindWindow("#32770", "アップロードするファイルの選択") wend
s = [A1] Sleep 1000&
SendDlgItemMessage hDlg, &H47C, WM_SETTEXT, 0, ByVal s SendMessage hDlg, WM_COMMAND, vbOK, ByVal 0&
ThisWorkbook.Saved = True Application.Quit
End Sub
(kumatti) 2016/04/12(火) 07:11
遅くなりすみません
ダイアログかどうかわからないので 教えていただきたいのですが 参照ボタンを押すと開いてくるものが
わたしが他で使っているVBAで Application.GetOpenFilename を使ったときと 同じ画面が開いてきます
kumattiさんに頂いた記述を動かしてみているのですが (中身全部までは理解できていません スミマセン) WM_COMMAND0 が青反転して止まります
ここは、開いてきた画面に何か指示を送っているのでしょうか
???さん なんとなくむちゃ振りなのはわかっております^^; ここの掲示板はいろんなことをご存じな方が多いので… もしかして何かヒントでも頂けたら、など思っております (あや) 2016/04/19(火) 14:04
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.