excel - 我可以通过 Excel VBA 访问和查询基于 Web 的 Crystal Report Viewer 吗?

标签 excel vbscript crystal-reports vba

我通过对 Crystal Report Viewer 的基于 Web 的访问来下载报告。 (诚​​然,我的第一个问题是我对 Crystal 一点也不精通。)我通常在使用 Excel VBA 自动化 IE 导航和 HTML 表单操作方面取得了成功,但我遇到了这个 Crystal Report Viewer 的难题。

例如,我可以通过 Crystal Report Viewer 下载报告,方法是指定我想要报告的 50 个州中的哪一个。我正在尝试使其自动化,以便它一次导出所有 50 份报告(或者,更确切地说,在我去吃午饭时连续导出)。

我已经提取了相关网站的 outerHTML。它在开头包含一个 OBJECT 标记,其中包含 23 个 PARAM NAME 标记,后跟以下 VBScript:

Sub window_onLoad()
  Page_Initialize()
End Sub
Sub Page_Initialize
  On Error Resume Next
  Dim webBroker
  Set webBroker = CreateObject("WebReportBroker.WebReportBroker")
  If err.number <> 0 then
    window.alert "The Crystal ActiveX Viewer is unable to create resource objects."
    CRViewer.ReportName = "[a URL...redacted]"
  Else
    Dim webSource0
    Set webSource0 = CreateObject("WebReportSource.WebReportSource")
    webSource0.ReportSource = webBroker
    webSource0.URL = "[a URL...redacted]"
    webSource0.PromptOnRefresh = True
    webSource0.AddParameter "password", "[somepassword]"
    webSource0.AddParameter "user", "[someuser]"
    CRViewer.ReportSource = webSource0
  End if
  CRViewer.ViewReport
End Sub

该脚本之后是另外三个 OBJECT 标记,每个标记都引用代码库。我导航到这些引用以查找 DLL,我假设这些引用指示我需要在我的 VBA 中调用的引用。凭直觉,我将 VBScript 移到 Excel VBA 中(这很愚蠢吗?),并将其放在我通常的登录和导航代码之后。我在行上收到“编译错误: undefined variable ”
window.alert "The Crystal ActiveX Viewer..." 'highlighting the word "window"

CRViewer.ReportName = "[a URL...redacted]"   'highlighting "CRViewer"

CRViewer.ReportSource = webSource0           'highlighting "CRViewer"

CRViewer.ViewReport                          'highlighting "CRViewer"

这是我遇到问题的地方。首先,我可能走错了路,或者根本不可能;但我不知道。其次,如果我走在正确的轨道上,Excel VBA 的可用引用中列出了很多 Crystal 引用。我不知道要使用哪些。顺便说一句:代码库引用
  • crviewer.dll
  • sviewhlp.dll
  • swebrs.dll
  • xqviewer.dll
  • cseexpt.ocx
  • crviewer.dep
  • crviewer.oca 和
  • 报告参数对话框.dll

  • 任何帮助,将不胜感激。我意识到我可能没有在这里提供所有必要的信息。如果需要更多,请告诉我。谢谢阅读。

    最佳答案

    Web 查看器是更广泛的 Business Objects 设置的一部分,还是简单地启动带有报告的查看器的更基本的东西?

    如果是前者,您已经有了通过基于 Web 的 CMC 自动分发的更简单的选项,其中可以使用各种分发选项安排报告刷新,包括到 UNC 路径。

    如果是后者,或者由于某种原因标准 CMC/BO 选项不合适,您可以考虑使用为此目的制作的代码库。 Python 的 splinter 库就是其中之一,也是我首选的 Web 自动化包:http://splinter.cobrateam.info/

    如果 VBA 是您的编码舒适区,那么有几种方法可以将 python 集成到 VBA 中,所有这些都只是谷歌而已......我不会在这里详细介绍它们,因为这是一个副业,我的回答更像是一个替代方案而不是一个直接的答案。

    关于excel - 我可以通过 Excel VBA 访问和查询基于 Web 的 Crystal Report Viewer 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22276987/

    相关文章:

    vba - Outlook 获取 Exchange 用户图片

    c# - 如何使用 mysql 在 C# 中的 visual studio 2015 中使用 Crystal 报表?

    python - 如何根据行值对Excel值进行切片

    vba - 使用 VBA 将字符串从 UserForm 传递到网站字段

    vbscript - 如何忽略VBScript中的Internet错误?

    asp-classic - 如何在经典 ASP 中运行参数化 SQL 查询?它安全吗?

    crystal-reports - 如何在 Crystal 报表的页眉中添加图表

    mysql - 显示从站状态,其中值 = x

    vba - MS Excel 2003 - 处理形状时 Excel VBA 中的简单取消选择问题

    mysql - CSV,将多行转换为按另一列值分组的逗号分隔列表