0

我需要运行带有来自网页的参数的 vbscript。更具体地说,来自 Sharepoint 2010 页面。我要做的是打开 SuperOffice 和特定的文档模板。在这样做的过程中,我有这段代码可以做到这一点。

startSOTemplate("Anbudsbrev")

Public Sub startSOTemplate(parameter)
    Dim objSO
    Set objSO = CreateObject("SuperOffice.Application")

    If not (ObjSO is nothing) then
        objSO.CurrentDocument.ChangeIdentity 0
        objSO.CurrentDocument.SetDefaults

        objSO.Context.Set "superoffice: document"
        objSO.CurrentDocument.Template = objSO.Database.GetListItemByName(130, parameter)
    End if
End Sub

现在,我尝试使用此代码将此脚本添加到网页(该链接稍后将替换为按钮)

<HTML>
<HEAD><TITLE>A Simple First Page</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
Public Sub myVBFunction(parameter)
    Dim objSO
    Set objSO = CreateObject("SuperOffice.Application")
    If not (objSO is nothing) Then


        objSO.CurrentDocument.ChangeIdentity 0
        objSO.CurrentDocument.SetDefaults

        objSO.Context.Set "superoffice: document"

        objSO.CurrentDocument.Template = objSO.Database.GetListItemByName(130, parameter)

    end if
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<H3>A Simple First Page</H3><HR>
<a href="#" onclick="VBscript:myVBFunction('Anbudsbrev')">link</a>
</BODY>
</HTML>

发生的事情是我在网页上收到错误消息ActiveX component can't create object: 'SuperOffice.Application'。我知道 dll 已正确注册,因为它确实可以单独使用 vbs 脚本。

所以,我真正的问题是:是否有更好的方法来实现同样的目标?也许从文件中运行 vbscript?只需使用每个按钮上的链接?

4

1 回答 1

1

几个潜在的陷阱:

  1. 你的操作系统是 64 位的吗?如果是这样,您必须确保运行正确的浏览器(Internet Explorer 带有 32 位和 64 位)。并非所有 COM 对象都可用/可见。

  2. 您是否SuperOffice.Application访问本地注册表或文件系统?如果是这样,那么您的 COM 对象是沙盒的。解决此问题的一种方法是通过使用.hta文件扩展名将 HTML 页面托管在 HTML 应用程序中,而不是.html允许您的 HTML 页面作为“完全受信任的”应用程序执行。请参阅 Wikipedia 对HTML Application的定义。

于 2012-09-06T07:16:47.630 回答