[英]Open Dialog IE Automation VBA
我正在嘗試登錄一個網站,然后上傳一些照片,但是沒有任何其他信息。 對話框打開時,我無法以編程方式對其進行控制。 我試圖將一個對象定義為FileDialog
並也使用Application.SendKeys
但似乎該對話框不是應用程序。
您必須使用具有以下代碼的瀏覽器對象:
。
Set browser = CreateObject("InternetExplorer.Application")
browser.Visible = True
brwser.navigate "http://stackoverflow.com/..." 'your address
Sleep 1000 'wait for 1 second
With browser.Document
Set txtUsr = .getElementsByName("Username")
Set txtPass = .getElementsByName("UserPass")
Set btnLogin = .getElementById("btnLogin")
End With
txtUsr.innerText = "User Name"
txtPass.innerText = "Password"
btnLogin.Click
。
等等...
使用DOM,並盡可能避免使用SendKeys
“睡眠”使用可以在模塊頂部聲明的API,如下所示:
私有聲明子睡眠庫“ kernel32”(ByVal dw毫秒)
。
編輯 :我注意到您實際上是在嘗試與對話框而不是瀏覽器頁面進行交互。 如果是這樣,您將需要使用Windows API函數才能首先從VBA進行識別; 我建議使用“ FindWindow”:
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String _
) As Long
並從VBA這樣調用它:
setMyDialog = FindWindow(vbNullString, dialogCaption)
然后發送密鑰給它; 您可以發送“ Tab”鍵從一個文本框移至下一個文本框
如果網站使用此對話框允許您選擇多個圖像,則自動化將更具挑戰性。 您將不得不使用其他錄制方法來模擬多個文件選擇或使用鼠標進行拖放操作
以下是一些有助於API功能的鏈接:
。
編輯您的3個問題:
。
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String _
) As Long
與此:
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String
) As LongPtr
。
這是一個聲明,因此必須將其放在模塊的頂部(在任何其他函數之前)
您仍然可以使用“ vbNullString”作為第一個參數,但是必須用對話框的標題替換“ dialogCaption”
你好我的代碼是這樣的:
1.I define an obj as internetexplorer.aplication
2.I login and then I want to upload a photo so I click the button for upload
' all works till now
3.Now I try to interact with the dialog that let's me to choose the photos programmatically and their is my problem
謝謝保羅,我今天將嘗試一下!
最好的祝福
烏達
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.