我目前正在尝试使用VBA选择要在网站上自动上传的文件。当文件浏览器窗口弹出时,我被困在文件选择中。使用SendKeys我尝试发送我正在尝试上传的文件的完整路径(filepath1,它很长),但SendKeys函数只返回字符串路径的一半左右,并且不尊重输入命令。 SendKeys函数也可以在两次中运行一次..不时将搜索栏留空。我已经看到很多人在网上抱怨这个,但没有其他解决方案可以暂停应用程序之间的呼叫,这就是我所做的。
我在模块中使用了Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
来定义Sleep 1调用。
有人可以帮我从这里出去吗?任何帮助将不胜感激,谢谢!
Sub GenerateKML_Macro()
' GenerateKML Macro
Dim IE As New InternetExplorer
Dim ExplorerInput As HTMLInputElement
Dim ExplorerButton As Object
Dim IEDoc As HTMLDocument
Dim NextThingy As Object
Dim iBox As HTMLIFrame
Dim iframeDoc As HTMLDocument
Dim filepath1 As Variant
Dim name_of_file As Variant
filepath1 = "...\Excel_Template\Template.xlsx"
name_of_file = "Template.xlsx"
'Load
IE.navigate "https://www.earthpoint.us/ExcelToKml.aspx"
'Show
IE.Visible = True
'Wait
WaitIE IE
'Select document
Set IEDoc = IE.document
WaitIE IE
Set iBox = IEDoc.all("iframe1")
Set iframeDoc = iBox.contentDocument
Set ExplorerButton = iframeDoc.all.Item("FileUpload1")
'ExplorerButton.Click
Sleep 1
ExplorerButton.Focus 'can't set ExplorerButton.value directly for security reasons
Sleep 1
Application.Wait Now
Sleep 1
SendKeys (filepath1)
Sleep 1
SendKeys ("{ENTER}")
Sleep 1
SendKeys (name_of_file)
Sleep 1
SendKeys ("{ENTER}")
Sleep 1
'Wait
WaitIE IE
'Close
'IE.Quit
'Unload
Set IE = Nothing
End Sub
Sub WaitIE(IE As InternetExplorer) '循环直到加载页面 直到IE.readyState = READYSTATE_COMPLETE 的DoEvents 环 结束子
Ps:无论多少次我运行应用程序,SendKeys都没有设法选择我想要达到的Template.xlsx文件。我将搜索路径分成两个变量以使其更清晰,但没有任何结果。