簡體   English   中英

打開對話框IE Automation VBA

[英]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個問題:

  • “使用該函數時出現錯誤。64位系統出現問題...”-您有64位版本的Excel,因此請替換此聲明

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

  • “當我復制函數VBA時,在End Sub之后只能顯示注釋...”

這是一個聲明,因此必須將其放在模塊的頂部(在任何其他函數之前)

  • 我應該寫什么而不是“ vbNullString”和“ dialogCaption”?

您仍然可以使用“ vbNullString”作為第一個參數,但是必須用對話框的標題替換“ dialogCaption”

  • 不要對vbNullString 使用引號
  • 不要在對話框標題中使用引號

你好我的代碼是這樣的:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM