【问题标题】:Are there any events I can tap into with VBScript for an SSRS report when it is exported to Excel?将 SSRS 报告导出到 Excel 时,我可以使用 VBScript 访问任何事件吗?
【发布时间】:2016-06-28 15:37:43
【问题描述】:

我已经尝试了我能想到的一切,以及其他人的建议,如 here 所见,在报表运行器将 SSRS 报表导出到 Excel 时指定工作表名称。到目前为止,没有任何效果。

是否有一些我可以利用并编写代码 (VBScript) 的事件?可以使用 VBScript 分配或调整数据值,但是在 SSRS 中有没有办法为某些事件编写代码,例如“OnGenerate”等?

【问题讨论】:

    标签: excel reporting-services vbscript spreadsheet rdl


    【解决方案1】:

    我从未使用过 SSRS,所以不知道它是如何导出的。 但是,您可以尝试设置应用程序 new_Workbook 事件来捕获任何打开的新工作簿并检查它是否有一些线索/功能,它是 SSRS 报告工具的产品。

    例如。您可以检查工作簿名称(如果有明确的迹象表明它是该工具的产品。如果您在导出时保存为“mySSRS_Report20160628.xlsx”之类的内容,那么您可以检查“mySSRS_”字符串。

    为此,您必须让“页面名称”始终出现在生成工作表的同一单元格中,例如我的示例中的 $A$2。

    您将需要一个插件,因此打开一个全新的工作簿并创建一个名为 cAppEvents 的新类模块并将其放入其中:

    Option Explicit
    Private WithEvents app As Application
    
    Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
      Dim i As Long
      If InStr(1, Wb.Name, "mySSRS_", vbTextCompare) Then
            For i = 1 To Wb.Worksheets.Count
                  Wb.Worksheets(i).Name = Wb.Worksheets(i).Range("A2").Value
            Next i
            Wb.Save
      End If
    End Sub
    
    Private Sub Class_Initialize()
      Set app = Application
    End Sub
    

    在该工作簿的 ThisWorkbook 模块中,将此代码放入:

    Private newApp As cAppEvents
    
    Private Sub Workbook_Open()
      Set newApp = New cAppEvents
    End Sub    
    

    将其另存为 Excel 加载项。转到文件-->选项-->插件来管理您的插件,并选中带有文件名的框

    测试打开名称中包含字符串“mySSRS_”的工作簿,并在单元格 $A$2 中包含一些相关数据。 你明白了....

    【讨论】:

    • 谢谢,但这不适用,因为它必须从 SSRS 完成。 Excel 文件是通过 SSRS 提供的“导出”选项创建的。这可能是不可能的,我只是抓住了稻草。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多