Excel VBA-导出和保存SSRS报告

Excel VBA-导出和保存SSRS报告,vba,excel,reporting-services,ie-automation,Vba,Excel,Reporting Services,Ie Automation,正在寻找有关使用VBA从公司内部网站提取SSRS报告的帮助。我读过几篇关于VBA自动化的文章,并成功地进行了所有选择并运行了报告,现在我只需要数据 具体来说,我需要帮助来选择导出到excel选项 我当前的VBA代码: Sub macro_07() Dim appIE As InternetExplorerMedium 'Set appIE = Nothing Dim objElement As Object Dim objCollection As Object Dim objCollectio

正在寻找有关使用VBA从公司内部网站提取SSRS报告的帮助。我读过几篇关于VBA自动化的文章,并成功地进行了所有选择并运行了报告,现在我只需要数据

具体来说,我需要帮助来选择导出到excel选项

我当前的VBA代码:

Sub macro_07()
Dim appIE As InternetExplorerMedium
'Set appIE = Nothing
Dim objElement As Object
Dim objCollection As Object
Dim objCollection2 As Object
Dim objCollection3 As Object
Dim objCollection4 As Object
Dim objCollection5 As Object
Dim objCollection6 As Object
Dim objCollection7 As Object
Dim objCollection8 As Object

Set appIE = New InternetExplorerMedium
sURL = ThisWorkbook.Sheets("Control").Range("IALinks").Cells(1, 1).Value
With appIE
    .Navigate sURL
    .Visible = True
End With

Do While appIE.Busy Or appIE.readyState <> 4
    DoEvents
Loop

Set objCollection = appIE.document.getElementById("ctl31_ctl04_ctl07_txtValue")
objCollection.Value = Range("YearSlct").Value
Set objCollection2 = appIE.document.getElementById("ctl31_ctl04_ctl03_ddValue")
objCollection2.selectedIndex = 4
objCollection2.FireEvent "onchange"
Application.Wait (Now + TimeValue("0:00:002"))
Set objCollection3 = appIE.document.getElementById("ctl31_ctl04_ctl05")
objCollection3.Click
Set objCollection4 = appIE.document.getElementById("ctl31_ctl04_ctl05_divDropDown_ctl01")
objCollection4.Focus
objCollection4.Checked = "checked"
Set objCollection5 = appIE.document.getElementById("ctl31_ctl04_ctl05_divDropDown_ctl03")
objCollection5.Focus
objCollection5.Checked = "checked"
objCollection5.FireEvent "onchange"

Set objCollection6 = appIE.document.getElementById("ctl31_ctl04_ctl00")
objCollection6.Click
Application.Wait (Now + TimeValue("0:00:002"))

Set objCollection7 = appIE.document.getElementById("ctl31_ctl06_ctl04_ctl00_Button")
objCollection7.Click


  Set appIE = Nothing
End Sub
子宏_07()
Dim应用程序作为InternetExplorerMedium
'设置appIE=无
作为对象的模糊对象
作为对象的Dim OBJ集合
作为对象的Dim objCollection2
Dim objCollection3作为对象
Dim objCollection4作为对象
Dim objCollection5作为对象
Dim objCollection6作为对象
Dim objCollection7作为对象
Dim objCollection8作为对象
Set appIE=New InternetExplorerMedium
sURL=ThisWorkbook.Sheets(“Control”).Range(“IALinks”).Cells(1,1).Value
和阿皮
.导航sURL
.Visible=True
以
在appIE.Busy或appIE.readyState 4时执行
多芬特
环
Set objCollection=appIE.document.getElementById(“ctl31\u ctl04\u ctl07\u txtValue”)
objCollection.Value=范围(“YearSlct”).Value
Set objCollection2=appIE.document.getElementById(“ctl31\U ctl04\U ctl03\U ddValue”)
objCollection2.selectedIndex=4
objCollection2.FireEvent“onchange”
Application.Wait(现在+时间值(“0:00:002”))
Set objCollection3=appIE.document.getElementById(“ctl31\u ctl04\u ctl05”)
对象集合3。单击
Set objCollection4=appIE.document.getElementById(“ctl31\u ctl04\u ctl05\u divDropDown\u ctl01”)
对象集合4.焦点
objCollection4.Checked=“Checked”
Set objCollection5=appIE.document.getElementById(“ctl31\u ctl04\u ctl05\u divDropDown\u ctl03”)
对象集合5.焦点
objCollection5.Checked=“Checked”
objCollection5.FireEvent“onchange”
Set objCollection6=appIE.document.getElementById(“ctl31\U ctl04\U ctl00”)
对象集合6。单击
Application.Wait(现在+时间值(“0:00:002”))
设置objCollection7=appIE.document.getElementById(“ctl31\u ctl06\u ctl04\u ctl00\u按钮”)
对象集合7。单击
设置appIE=Nothing
端接头
这让我选择了导出按钮,但我不知道如何选择excel选项

导出菜单:

以下是该网站的HTML代码:

<table style="display:inline;" cellspacing="0" cellpadding="0">
                        <tbody><tr>
                            <td height="28"><div class="HoverButton" id="ctl31_ctl06_ctl04_ctl00">
                                <table title="Export" id="ctl31_ctl06_ctl04_ctl00_Button" border="0">
                                    <tbody><tr>
                                        <td><a id="ctl31_ctl06_ctl04_ctl00_ButtonLink" style="cursor: pointer;" href="javascript:void(0)"><img id="ctl31_ctl06_ctl04_ctl00_ButtonImg" style="border-style:None;height:16px;width:16px;border-width:0px;" src="/Reports/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=10.50.1600.1&amp;Name=Microsoft.Reporting.WebForms.Icons.Export.gif"><img id="ctl31_ctl06_ctl04_ctl00_ButtonImgDown" style="border-style:None;height:6px;width:7px;border-width:0px;margin-bottom:5px;margin-left:5px;" src="/Reports/Reserved.ReportViewerWebControl.axd?OpType=Resource&amp;Version=10.50.1600.1&amp;Name=Microsoft.Reporting.WebForms.Icons.ArrowDown.gif"></a></td>
                                    </tr>
                                </tbody></table>
                            </div><div class="MenuBarBkGnd" id="ctl31_ctl06_ctl04_ctl00_Menu" style="padding: 1px; display: block; visibility: visible; position: absolute;">
                                <div class="HoverButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('XML');" href="javascript:void(0)">XML file with report data</a>
                                </div><div class="DisabledButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('CSV');" href="javascript:void(0)">CSV (comma delimited)</a>
                                </div><div class="DisabledButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('PDF');" href="javascript:void(0)">PDF</a>
                                </div><div class="DisabledButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('MHTML');" href="javascript:void(0)">MHTML (web archive)</a>
                                </div><div class="DisabledButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('EXCEL');" href="javascript:void(0)">Excel</a>
                                </div><div class="DisabledButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('IMAGE');" href="javascript:void(0)">TIFF file</a>
                                </div><div class="DisabledButton">
                                    <a class="ActiveLink" style="padding: 3px 8px 3px 32px; text-decoration: none; display: block; white-space: nowrap;" onclick="$find('ctl31').exportReport('WORD');" href="javascript:void(0)">Word</a>
                                </div>
                            <div style="left: 0px; top: 0px; width: 26px; height: 149px; filter: none; position: absolute; z-index: -1; opacity: 0.05; background-color: black;"></div></div></td>
                        </tr>
                    </tbody></table>

设置报表订阅,报表服务器将为您将excel导出到文件共享

或者,您可能希望调查报告后面的数据库查询,并(重新)将报告创建到Excel中


谢谢大家的留言。根据Ryan的建议,我找到了一个解决方案,并查看了他在之前帖子中提供的答案()

从这里开始,它是一个简单的循环:

    For Each Element In Elements
        If Element.innerText = "Excel" Then Element.Click
    Next

因为你是新手,所以有一个建议:每个问题只问一个问题,否则它可能会被关闭为“太宽”。您可能需要花一点时间阅读如何有效地在网站上提问。您可以使用该链接来修改问题。建立一个
ActiveLink
类的集合,然后迭代查找以Excel作为内部文本的类并单击它。谢谢。我不知道该怎么做,但在您之前回答的问题中找到了答案。谢谢您的输入。不幸的是,我只能通过浏览器获取报告,这就是我尝试使用IE自动化的原因。我将与IT团队核实这些选项,但我正在寻找可以通过当前访问实现的功能。另一个“简单”选项(如果允许Excel从网页导入数据)是打开Excel,新建工作簿,单击“数据”选项卡,选择“从web”并粘贴到报告URL中,然后按照向导操作。一旦掌握了如何执行上述步骤,请尝试录制宏。谢谢。这就是我第一个开始的地方。我对您建议的订阅解决方案有所了解。