如何从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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |