将 Visual Basic 语句移植到 Perl Win32::OLE 语句

Posted

技术标签:

【中文标题】将 Visual Basic 语句移植到 Perl Win32::OLE 语句【英文标题】:Porting Visual Basic staements to Perl Win32::OLE ones 【发布时间】: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 及其后代。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于将 Visual Basic 语句移植到 Perl Win32::OLE 语句的主要内容,如果未能解决你的问题,请参考以下文章

INSERT INTO 语句 Visual Basic 中的语法错误

将 Perl 移植到 C++ `print "\x2501" x 12;` [重复]

在 case 语句中使用枚举仅使用 Case 1 (Visual Basic)

将perl代码移植到python的正确方法

使用Visual Basic将文件上传到Google云端硬盘

使用 OLEDBConnection 将新记录插入到带有 Visual Basic 的表中