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

时间:2014-03-09 00:37:32

标签: excel-vba vbscript crystal-reports vba excel

我通过基于Web的访问Crystal Report Viewer来下载报告。 (不可否认,我的第一个问题是我完全不熟悉Crystal。)我通常在使用Excel VBA自动化IE导航和HTML表单操作方面取得了成功,但我遇到了这个Crystal Report Viewer的问题。

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

我已经取消了相关网站的外部HTML。它在开头包含一个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(这是愚蠢的吗?)并将其放在我通常的登录和导航代码之后。我在行

上得到“编译错误:变量未定义”
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引用。我不知道使用哪些。 BTW:代码库引用

  • crviewer.dll
  • sviewhlp.dll
  • swebrs.dll
  • xqviewer.dll
  • cselexpt.ocx
  • crviewer.dep
  • crviewer.oca和
  • reportparameterdialog.dll

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

1 个答案:

答案 0 :(得分:0)

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

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

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

如果VBA是你的编码舒适区,有几种方法可以将python整合到VBA中,所有这些只是谷歌的一部分...我不会在这里详细介绍它们,因为这是对此的副作用,并且我的答案不仅仅是一个直接的答案。