首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开对话框IE自动化VBA

打开对话框IE自动化VBA
EN

Stack Overflow用户
提问于 2015-05-25 17:29:51
回答 2查看 2.5K关注 0票数 0

我试图登录一个网站,然后上传一些照片,但我没有任何进一步的进展。当对话框打开时,我无法以编程方式控制它。我试图将一个对象定义为FileDialog并使用Application.SendKeys,但该对话框似乎不是一个应用程序。

EN

回答 2

Stack Overflow用户

发布于 2015-05-25 22:53:00

您必须使用带有类似以下代码的浏览器对象:

代码语言:javascript
复制
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,如果possible
  • "Sleep“使用可以在模块顶部声明的API,请尽量避免使用SendKeys:

私有声明子休眠库"kernel32“(ByVal dwMilliseconds As Long)

编辑:我注意到您实际上是在尝试与对话框交互,而不是与浏览器页面交互。如果是这样的话,您需要使用Windows API函数才能首先从VBA中识别它;我建议使用"FindWindow":

代码语言:javascript
复制
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
 ByVal lpClassName As String, _
 ByVal lpWindowName As String _
) As Long

并从VBA调用它,如下所示:

代码语言:javascript
复制
setMyDialog = FindWindow(vbNullString, dialogCaption)

然后将键发送到它;您可以发送"Tab“键从一个文本框移动到下一个文本框

如果网站使用此对话框来允许您选择多个图像,则自动化将更具挑战性;您必须使用其他录制方法来模拟多个文件选择或使用鼠标的拖放操作

以下是一些对API函数有帮助的链接:

为您的3个问题编辑

  • “使用函数时出现错误。64位系统有问题...”-您有64位版本的Excel,因此请替换此声明

代码语言:javascript
复制
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
     ByVal lpClassName As String, _
     ByVal lpWindowName As String _
) As Long

使用这一条:

代码语言:javascript
复制
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”替换为对话框的标题

  • do不对vbNullString
  • do使用引号对对话框的标题使用引号
票数 0
EN

Stack Overflow用户

发布于 2015-05-26 20:10:39

你好我的代码是这样的:

代码语言:javascript
复制
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 

谢谢你,保罗,我今天就试一试!

诚挚的问候

Udar

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30435137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档