Html Internet Explorer中的VBA从下拉列表中选择
编辑:我清理了源代码格式并更新了VBA代码。我不再收到错误,但我的浏览器窗口中未发生任何事情未选择任何内容,未单击任何内容 我有一些VBA代码,允许用户在Excel的表单中输入信息。该代码获取这些信息并生成我们内部网上某个页面的地址。在该页面上有一个下拉列表,用于选择导出格式,选择格式后,用户可以单击导出文件 我尝试过的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
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&StartDate=01%2f01%2f2015+00%3a00%3a00&EndDate=07%2f21%2f2015+00%3a00%3a00&WellName=Acadia&rs%3aParameterLanguage=&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&StartDate=01%2f01%2f2015+00%3a00%3a00&EndDate=07%2f21%2f2015+00%3a00%3a00&WellName=Acadia&rs%3aParameterLanguage=&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=" var formatDropDown = document.getElementById('ReportViewerControl_ctl01_ctl05_ctl00'); if (formatDropDown.selectedIndex == 0) return false; window.open(document.getElementById('ReportViewerControl').ClientController.m_exportUrlBase + encodeURIComponent(formatDropDown.value), '_blank') formatDropDown.selectedIndex = 0; 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