将 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)