代码之家  ›  专栏  ›  技术社区  ›  Zaid

如何通过Excel中的ActiveX控件运行Perl脚本?

  •  4
  • Zaid  · 技术社区  · 16 年前

    我想在Excel电子表格中单击按钮时运行一个Perl脚本。

    因为按钮被指定执行一个VB宏,所以宏应该有效地执行程序。

    作为我有史以来第一个vb脚本,这是我想到的,这让我很恼火。 Run-time error '424': Object required 错误。

    Sub RunPerlScript()
        System.Diagnostics.process.Start ("perlscript.pl")
    End Sub
    

    我怎样才能让这个脚本做我想做的?

    3 回复  |  直到 14 年前
        1
  •  3
  •   codeape    16 年前

    不能在VBA宏中使用.NET类。

    使用VBA Shell 功能。

    Shell "p:\ath\to\perlscript.pl"
    

    文件:

    壳函数

    运行可执行程序并返回 表示 程序的任务ID如果成功, 否则返回零。

    句法

    shell(路径名[,windowstyle])

    shell函数语法包含以下内容 命名参数:

    需要零件描述路径名; 变量(字符串)。程序名称 执行和任何必需的参数 或命令行开关;可能包括 目录或文件夹和驱动器。上 Macintosh,你可以使用MacID 用于指定应用程序的 签名而不是名字。这个 下面的示例使用签名 对于Microsoft Word:Shell macid(“mswd”)windowstyle可选。 变量(整数)对应于 窗口的样式,其中 程序将运行。如果窗口样式 省略,程序启动 用焦点最小化。在Macintosh上 (System 7.0或更高版本),WindowsStyle 只确定 应用程序获得焦点 跑。

    windowstyle命名参数具有 这些值:

    常量值说明vbhide 0 窗口被隐藏,焦点被传递 到隐藏的窗口。蝙蝠皮 常量不适用于 Macintosh平台。VB-标准焦点1 窗口有焦点并还原到 它的原始大小和位置。 显示vbminimizedfocus 2窗口 作为具有焦点的图标。 vbMaximizedFocus 3窗口最大化 关注焦点。vbNormalNoFocus 4窗口 恢复到最新大小 位置。当前活动的 窗口保持活动状态。 vbMinimizedNoFocus6窗口是 显示为图标。目前 活动窗口保持活动状态。

        2
  •  5
  •   Colin Pickard    16 年前

    我没有写这段话,但这似乎是对你问题的一个很好的回答。

    从文章中 “ How to execute a perl script from VBA “ :

    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Sub RunPerl()
        MsgBox ("Start of macro")
        Dim oWsc As Object
        Set oWsc = CreateObject("WScript.Shell")
        Dim oExec As Object
        Set oExec = oWsc.Exec("perl C:\temp\myperl.pl StartParam")
        While oExec.Status <> 1 ' Wait for process
            Sleep 1000
        Wend
        MsgBox ("STDOUT" + oExec.StdOut.ReadAll())
        MsgBox ("STDERR" + oExec.StdErr.ReadAll())
        Set oWsc = Nothing
        MsgBox ("End of macro")
    End Sub
    

    您可能需要先安装ActivePerl

        3
  •  1
  •   daotoad    16 年前

    Activestate的PDK有 PerlCtrl 它允许您将Perl脚本打包为ActiveX控件。它将您的脚本和所有依赖项收集到一个整洁的DLL中。

    推荐文章