VBA调用InternetExplorer操作IE浏览器,自动弹出文件选择对话框时,VBA会处于阻塞状态,你必须手工关闭文件选择对话框,VBA才能继续向后运行。
例如下面网址,就有一个文件浏览按钮:
http://www.zytxs.com/web1/upload.aspx
我做了一个exe文件,可以在另一个进程中来处理文件对话框。
Sub Test()
Dim File As MSHTML.HTMLInputFileElement
Dim WSH As Object
Set File = IE.document.getElementById("myfile")
Set WSH = CreateObject("WScript.Shell")
WSH.Run "E:Office_VBAAutoSelectFileAutoSelectFile.exe E:Office_VBATranslate.rar", vbHide, False
File.Click
End Sub
上述代码,WSH.Run的参数中,包含两部分,空格左侧是处理文件对话框的exe文件路径(在本帖中可以下载并解压缩)
后面的 E:Office_VBATranslate.rar 是电脑中随便的一个文件路径,也就是要往文件选择对话框中上传的那个文件。
执行上述Test过程,VBA会自动打开文件浏览对话框,然后自动给对话框设置路径,并确定。
exe文件下载地址
下载后,解压缩到不含空格的路径下。请勿点击exe文件。
请打开Excel文件,然后点击工作表上的按钮进行测试。