加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何从Perl或命令行激活Excel加载项?

发布时间:2020-12-16 06:20:02 所属栏目:大数据 来源:网络整理
导读:(请原谅我对Excel加载项的无知,并在适当的时候随意纠正我的女性主义.) 我有一个经常使用的Excel加载项.此加载项会插入一个带有许多按钮的工具栏.我想自动执行在Excel中打开电子表格然后“单击”其中一个按钮的任务.换句话说,我想使用Perl(或命令行)来激活此
(请原谅我对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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读