【问题标题】:Porting Visual Basic staements to Perl Win32::OLE ones将 Visual Basic 语句移植到 Perl Win32::OLE 语句
【发布时间】:2014-03-09 16:23:20
【问题描述】:

我阅读了所有标准的 Win32::OLE 文本,例如 Jan Dubois' classic,当然还有 official package doc、Microsoft 的简洁文章等等。

我错过了将捕获的 VBA Excel 宏语句转换为 Perl Win32::OLE 语句的规则。

假设我有一个捕获的 VBA 宏:

Sub cntrl_arrow_down()
     Range(Selection, Selection.End(xlDown)).Select
End Sub

假设我已经获得了一个应用程序 (Excel) 对象、一个“书”对象、一个“工作表”对象并激活了工作表。此外,我选择了一个单元格,我正在寻找该单元格所在列的向下范围。我想获得一个“范围”对象,然后我可以将范围读入 2D Perl 数组。

拜托,我需要规则,而不仅仅是这一行的答案。

谢谢!

【问题讨论】:

  • 如果您使用 Perl,为什么必须使用 Win32::OLE,而不是 Excel 模块之一?当然,如果您真的很想知道如何运行 VBA 宏,那是一回事。但是,如果您只需要与 Excel 文件交互,那么 Perl 中有一些模块可以做到这一点(没有 OLE)。
  • 一个好问题!让我看看。
  • 谢谢jimtut!很久以前,我用 Perl 来操作 Excel 电子表格,包括读写,当时我确信 Win32::OLE 一定是最好的,是由开发 OLE 的人开发的,不是吗?我最近需要再做一次,所以我从未停下来重新考虑。 jimtut 让我这样做了,我发现潜伏在 CPAN 上的所有这些 xxx::Excel::yyy 模块都更易于使用,并且更易于添加和增强。就我而言,它是 Excel::Table 及其后代。

标签: perl vba excel win32ole


【解决方案1】:

好吧,我仍然不知道我原来的问题的答案(而且这个问题的好答案仍然对许多人有用),但我找到了一组替代工具,请参阅上面的 jimtut cmets 和我的回复。

【讨论】:

    【解决方案2】:

    将我的原始评论复制到完整的答案中,因为它似乎对操作有所帮助(也许它会被接受为答案):

    如果您使用 Perl,为什么必须使用 Win32::OLE,而不是 Excel 模块之一?当然,如果您真的很想知道如何运行 VBA 宏,那是一回事。但是,如果您只需要与 Excel 文件交互,那么在 Perl 中有一些模块可以做到这一点(没有 OLE)。

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多