gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:55:09 31 4
gpt4 key购买 nike

(请原谅我对 Excel 加载项的无知,并随时在适当的情况下更正我的术语。)

我有一个经常使用的 Excel 加载项。该插件插入一个带有许多按钮的工具栏。我想自动执行在 Excel 中打开电子表格,然后“单击”其中一个按钮的任务。换句话说,我想使用 Perl(或命令行)来激活此插件的特定功能。

我无法立即访问该加载项的源代码,但如果需要,我应该能够请求特定信息,例如过程名称。

我无法使用 CPAN 模块来完成此任务 - 只能使用我的 ActivePerl 版本安装的模块 - 但我确实有 Win32::OLE ,这对其他办公自动化很有帮助。

有什么指点吗?

最佳答案

工具栏按钮有按键绑定(bind)吗?

如果有,您可以使用 SendKeys 方法将该 key 发送到 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

关于perl - 如何从 Perl 或命令行激活 Excel 加载项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/941456/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com