【发布时间】:2012-03-01 16:22:28
【问题描述】:
我是 perl 的新手,我正在尝试编写一个模块,该模块将在已经打开的 excel 工作表上运行 excel 宏。有一个代码片段描述了如何从另一个 Excel 表运行宏,但我希望宏代码作为同一文件中的子例程。如何实施?有人可以帮忙吗?
use strict;
use warnings;
use Win32::OLE;
my $excel= Win32::OLE->new('Excel.Application')or die "Could not create Excel.Application!\n;
$excel->Workbooks->open( 'C:\Users\Me\Documents\Book1.xlsx' );
$excel->run( 'Book1!Macro1' );
# Here i want that Macro1 as sub in this file itself & not from book1
$excel->quit;
【问题讨论】:
-
在不指定 Book1 的情况下尝试
$excel->Run('Macro1') -
我尝试了很多方法,但无法将宏添加到 excel。每次它都会出错:
Win32::OLE(0.1704) 错误 0x80020003:METHOD/PROPERTYGET 中的“未找到成员”
# my $mod = $sheet->VBProject->VBComponents->Add(vbextFileTypeModule);
# 甚至尝试使用 vbext_ct_StdModule & 1 但没有一个工作
my $mod = $sheet->VBProject->VBComponents->Item( 'ThisWorkbook' )->CodeModule;
$mod->AddFromString( Public Sub Display
MsgBox "Hello";
End Sub
MODTEXT
$showButton->{OnAction} = 'Display';
谁能提供相同的解决方案.
标签: perl perl-module