Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Internet Explorer中的VBA从下拉列表中选择_Html_Vba_Excel_Internet Explorer 9 - Fatal编程技术网

Html Internet Explorer中的VBA从下拉列表中选择

Html Internet Explorer中的VBA从下拉列表中选择,html,vba,excel,internet-explorer-9,Html,Vba,Excel,Internet Explorer 9,编辑:我清理了源代码格式并更新了VBA代码。我不再收到错误,但我的浏览器窗口中未发生任何事情未选择任何内容,未单击任何内容 我有一些VBA代码,允许用户在Excel的表单中输入信息。该代码获取这些信息并生成我们内部网上某个页面的地址。在该页面上有一个下拉列表,用于选择导出格式,选择格式后,用户可以单击导出文件 我尝试过的VBA代码和几个变体如下: Public Sub window_Open(strLocation As String, Menubar As Boolean, height As

编辑:我清理了源代码格式并更新了VBA代码。我不再收到错误,但我的浏览器窗口中未发生任何事情未选择任何内容,未单击任何内容

我有一些VBA代码,允许用户在Excel的表单中输入信息。该代码获取这些信息并生成我们内部网上某个页面的地址。在该页面上有一个下拉列表,用于选择导出格式,选择格式后,用户可以单击导出文件

我尝试过的VBA代码和几个变体如下:

Public Sub window_Open(strLocation As String, Menubar As Boolean, height As Long, width As Long, resizable As Boolean)

With CreateObject("InternetExplorer.Application")
    .Visible = False
    .height = height
    .width = width
    .Menubar = Menubar
    .Visible = True
    .resizable = True
    .Navigate strLocation
End With

End Sub


    Private Sub OKButton_Click()
    Dim ProductionAddress As String
    ProductionAddress = "http://Collapsed"

    window_Open ProductionAddress, True, 800, 1000, False
        Dim ie As Object
        Set ie = CreateObject("InternetExplorer.Application")

        ie.Navigate ProductionAddress

        While ie.ReadyState <> 4 Or ie.Busy: DoEvents: Wend

        ie.document.getelementbyid("ReportViewerControl_ctl01_ctl05_ctl00").Value = "EXCEL"

        Set objButton = ie.document.getelementbyid("ReportViewerControl_ctl01_ctl05_ctl01")
            objButton.Focus
            objButton.Click

    End Sub
下面是我尝试浏览的页面的源代码。 用于选择EXCEL的元素:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<style>
body, frameset, form {
    margin: 0px;
    padding: 0px;
}
.PageNumberText, input, button, select, table, body, frameset {
    font-size: 8pt;
    font-family: Verdana;
}
.ToolbarExport {
    display: inline;
}
.WidgetSet {
    height: 30px;
}
.ToolBarButtonsCell {
    padding-left: 6px;
}
.MenuBarBkGnd {
    background-color: #ECE9D8;
}
</style>
</head>
<body style="margin: 0px; overflow: auto;"><form name="ReportViewerForm" id="ReportViewerForm" action="ReportViewer.aspx?%2fProduction%2fWell+Daily+Production&amp;StartDate=01%2f01%2f2015+00%3a00%3a00&amp;EndDate=07%2f21%2f2015+00%3a00%3a00&amp;WellName=Acadia&amp;rs%3aParameterLanguage=&amp;rc%3aParameters=Collapsed" method="post"><table id="ReportViewerControl" style="width: 100%; height: 100%;" onclick="if (document.getElementById('ReportViewerControl_ctl00') != null) document.getElementById('ReportViewerControl_ctl00').ParametersController.HideActiveDropDown();" onactivate="if (document.getElementById('ReportViewerControl_ctl00') != null) document.getElementById('ReportViewerControl_ctl00').ParametersController.HideActiveDropDown();" cellspacing="0" cellpadding="0"><tbody><tr><td><div class="MenuBarBkGnd"><div class="ToolBarButtonsCell"><div class="ToolbarExport WidgetSet"><table style="display: inline;" cellspacing="0" cellpadding="0"><tbody><tr><td height="28"><select name="ReportViewerControl$ctl01$ctl05$ctl00" title="Export Formats" id="ReportViewerControl_ctl01_ctl05_ctl00" onchange="document.getElementById('ReportViewerControl_ctl01_ctl05_ctl01').Controller.SetViewerLinkActive(document.getElementById('ReportViewerControl_ctl01_ctl05_ctl00').selectedIndex != 0);"><option value="EXCEL">Excel</option></select></td></tr></tbody></table></div></div></div></td></tr></tbody></table></form></body>
</html>
以及导出元素的源代码:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<style>
.DisabledLink {
    font-size: 8pt;
    font-family: Verdana;
    color: gray;
    text-decoration: none;
    cursor: default;
}
body, frameset, form {
    margin: 0px;
    padding: 0px;
}
.PageNumberText, input, button, select, table, body, frameset {
    font-size: 8pt;
    font-family: Verdana;
}
.ToolbarExport {
    display: inline;
}
.WidgetSet {
    height: 30px;
}
.ToolBarButtonsCell {
    padding-left: 6px;
}
.MenuBarBkGnd {
    background-color: #ECE9D8;
}
</style>
</head>
    <body style="margin: 0px; overflow: auto;"><form name="ReportViewerForm" id="ReportViewerForm" action="ReportViewer.aspx?%2fProduction%2fWell+Daily+Production&amp;StartDate=01%2f01%2f2015+00%3a00%3a00&amp;EndDate=07%2f21%2f2015+00%3a00%3a00&amp;WellName=Acadia&amp;rs%3aParameterLanguage=&amp;rc%3aParameters=Collapsed" method="post"><table id="ReportViewerControl" style="width: 100%; height: 100%;" onclick="if (document.getElementById('ReportViewerControl_ctl00') != null) document.getElementById('ReportViewerControl_ctl00').ParametersController.HideActiveDropDown();" onactivate="if (document.getElementById('ReportViewerControl_ctl00') != null) document.getElementById('ReportViewerControl_ctl00').ParametersController.HideActiveDropDown();" cellspacing="0" cellpadding="0"><tbody><tr><td><div class="MenuBarBkGnd"><div class="ToolBarButtonsCell"><div class="ToolbarExport WidgetSet"><table style="display: inline;" cellspacing="0" cellpadding="0"><tbody><tr><td height="28"><a title="Export" class="DisabledLink" id="ReportViewerControl_ctl01_ctl05_ctl01" onmouseover="this.Controller.OnLinkHover();" onmouseout="this.Controller.OnLinkNormal();" onclick="&#10;var formatDropDown = document.getElementById('ReportViewerControl_ctl01_ctl05_ctl00');&#10;if (formatDropDown.selectedIndex == 0)&#10;return false;&#10;window.open(document.getElementById('ReportViewerControl').ClientController.m_exportUrlBase + encodeURIComponent(formatDropDown.value), '_blank')&#10;formatDropDown.selectedIndex = 0;&#10;document.getElementById('ReportViewerControl_ctl01_ctl05_ctl01').Controller.SetViewerLinkActive(document.getElementById('ReportViewerControl_ctl01_ctl05_ctl00').selectedIndex != 0);return false;" href="#"><script type="text/javascript">
                            document.getElementById('ReportViewerControl_ctl01_ctl05_ctl01').Controller = new ReportViewerLink("ReportViewerControl_ctl01_ctl05_ctl01", false, "ActiveLink", "DisabledLink", "", "", "");
                        </script>Export</a></td></tr></tbody></table></div></div></div></td></tr></tbody></table></form></body>
</html>

谢谢

您需要首先实际导航到页面以加载文档,然后使用以下代码:

ie.Document.GetElementByID("ReportViewerControl_ctl01_ctl05_ctl00").Value = "EXCEL"
使用标记内的选项

要导航:


我真的很难让这段代码正常工作,而且我发现的现有问题都没有明确的答案,所以我想包括我最终使用的代码:

Private Sub OKButton_Click()
Dim ProductionAddress As String
ProductionAddress = "http://Collapsed"

Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
    .Silent = True
    .Visible = True
    .Navigate ProductionAddress
End With

While ie.ReadyState <> 4 Or ie.Busy: DoEvents: Wend

ie.document.getelementbyid("ReportViewerControl_ctl01_ctl05_ctl00").Value = "EXCEL"

Set objButton = ie.document.getelementbyid("ReportViewerControl_ctl01_ctl05_ctl01")
    objButton.Focus
    objButton.Click

End Sub

这打开了页面,从下拉列表中选择并成功地按ID单击了一个元素。

window\u Open做了什么?这确实消除了我的错误消息,但我的浏览器中似乎仍然没有发生任何事情。我试着用同样的代码点击谷歌搜索页面上的新闻,搜索“猫”,但也没用——至少没有错误消息:window_Open GoogleCats,True,850,1200,False Dim ie As Object Set ie=CreateObjectInternetExplorer.Application ie.Navigate GoogleCats而ie.ReadyState 4或ie.Busy:DoEvents:Wend ie.Navigate GoogleCats Set objButton=ie.document.getelementbyidgb5 objButton.Focus objButton.Click End SubI道歉,我试图让代码格式化工作,但后来我被锁定编辑。我是否应该为单击导出元素创建一个单独的问题?您需要解释打开什么窗口打开Internet Explorer浏览器窗口。我将把代码添加到我的问题中你实际上打开了IE的两个实例。创建一个公共变量,并在你的window\u Open例程中分配它。或者根本不使用窗口打开例程。
Private Sub OKButton_Click()
Dim ProductionAddress As String
ProductionAddress = "http://Collapsed"

Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
With ie
    .Silent = True
    .Visible = True
    .Navigate ProductionAddress
End With

While ie.ReadyState <> 4 Or ie.Busy: DoEvents: Wend

ie.document.getelementbyid("ReportViewerControl_ctl01_ctl05_ctl00").Value = "EXCEL"

Set objButton = ie.document.getelementbyid("ReportViewerControl_ctl01_ctl05_ctl01")
    objButton.Focus
    objButton.Click

End Sub