SendKey不会在VBA中发送完整的字符串(使用IE)

时间:2017-07-04 11:37:12

标签: html excel vba internet-explorer

我目前正在尝试使用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文件。我将搜索路径分成两个变量以使其更清晰,但没有任何结果。

0 个答案:

没有答案