如何从Perl或命令行激活Excel加载项?
|
(请原谅我对Excel加载项的无知,并在适当的时候随意纠正我的女性主义.)
我有一个经常使用的Excel加载项.此加载项会插入一个带有许多按钮的工具栏.我想自动执行在Excel中打开电子表格然后“单击”其中一个按钮的任务.换句话说,我想使用Perl(或命令行)来激活此加载项的特定功能. 我没有立即访问加载项的源代码,但我应该能够请求特定信息,如过程名称,如果需要. 我无法使用CPAN模块执行此任务 – 仅适用于我的ActivePerl版本 – 但我确实有Win32::OLE,这对其他Office自动化很有帮助. 有什么指针吗? 解决方法
是否有工具栏按钮的键绑定?
如果有,您可以使用SendKeys方法将该密钥发送到Excel:http://msdn.microsoft.com/en-us/library/aa202943(office.10).aspx 或者,CommandBars集合可能很有用.见http://msdn.microsoft.com/en-us/library/aa171356(office.11).aspx以供参考. 下面的示例代码列出了“标准”工具栏中的可见命令栏和控件.当它找到带有标题Open的控件时,它会调用该控件.这应显示“文件 – >打开”对话框: #!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE qw(in with);
$Win32::OLE::Warn = 3;
my $app = get_excel();
$app->{Visible} = 1;
my $book = $app->Workbooks->Add;
for my $bar (in $app->CommandBars) {
if ( $bar->{Visible} ) {
print $bar->{Name},"n";
}
}
print "Controls in the 'Standard' toolbar:n";
my $bar = $app->CommandBars->{Standard};
for my $control (in $bar->{Controls}) {
print "t",$control->{Caption},"n";
if ( $control->{Caption} =~ /^Open/ ) {
print "opening ...n";
$control->Execute;
}
}
sub get_excel {
my $excel;
eval {
$excel = Win32::OLE->GetActiveObject('Excel.Application');
};
die "$@n" if $@;
unless(defined $excel) {
$excel = Win32::OLE->new('Excel.Application',sub { $_[0]->Quit })
or die "Oops,cannot start Excel: ",Win32::OLE->LastError,"n";
}
return $excel;
}
__END__
HTH (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
