将Perl脚本转换为VBA脚本
我有一个可以工作的Perl脚本,我想将其转换为VBA,在Excel宏中运行,以便可以轻松地共享给其他PC。我有一个shell脚本,在其中传递驱动perl脚本的参数。 我使用Perl脚本从一个固定宽度的文件中读取所有行数据的每个指定列,起始值为54,63,并将该数据与另一个文件进行比较,然后打印差异。我将在Shell脚本中以runpro.pl filea.txt fileb.csv>myoutput.txt的形式传递参数 任何帮助都会很好!特别是如果有人能给我指出正确的方向,因为代码相当简单。谢谢将Perl脚本转换为VBA脚本,perl,excel,vba,Perl,Excel,Vba,我有一个可以工作的Perl脚本,我想将其转换为VBA,在Excel宏中运行,以便可以轻松地共享给其他PC。我有一个shell脚本,在其中传递驱动perl脚本的参数。 我使用Perl脚本从一个固定宽度的文件中读取所有行数据的每个指定列,起始值为54,63,并将该数据与另一个文件进行比较,然后打印差异。我将在Shell脚本中以runpro.pl filea.txt fileb.csv>myoutput.txt的形式传递参数 任何帮助都会很好!特别是如果有人能给我指出正确的方向,因为代码相当简单。谢谢
#!/usr/bin/perl
#Perl Script runpro.pl
#***************************************************
use strict;
use warnings;
my ($fa, $fb) = @ARGV;
@ARGV = $fa;
my %codes;
while(<>) {
s/[\r\n]+\z//;
$_ = substr($_, 54, 63);
s/\s+\z//;
next if $_ eq "";
$codes{$_} =1;
}
@ARGV = $fb;
my %descrip;
while(<>) {
s/[\r\n]+\z//;
s/,.*//;
s/"//g;
$descrip {$_} = 1 if s/^1234//;
}
for (sort keys %codes) {$
print "$_\n" unless ($descrip{$_});
}
有两点:
1 VBA与Perl非常不同,因此一行程序中的一行程序在另一行程序中会很棘手
2如果您没有在Excel中使用VBA,我建议您先录制宏,使功能区中的“开发人员”选项卡可见,然后选择“录制宏”,然后开始执行打开文件、导入固定宽度的文件等操作。停止录音后,您将看到执行这些操作的语法-这将非常有用
3您必须决定如何将参数传递给VBA-工作表、对话框中的单元格。。。没有从命令行运行VBA这样的事情
我想知道您是否真的需要/想要VBA,还是最好编译一个独立的程序.exe。这意味着要在PC windows、Mac OS或两者上运行吗?例如,请参阅-如果不是您要求的,那么这可能就是您实际需要的…?您能否举例说明如何使用VBA函数-如何传递参数,以及希望输出显示在何处?你的问题并不完全清楚……我用上面的一个例子进行了编辑。谢谢@FlorisCheck this:如果在MicrosoftOffice中录制宏,通常可以将其直接转换为Perl。