将Perl脚本转换为VBA脚本

时间:2013-03-06 20:20:37

标签: perl excel-vba vba excel

我有一个工作的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 个答案:

答案 0 :(得分:1)

有几点:

1)VBA 非常与Perl不同 - 所以在一个中单行的东西在另一个中会很棘手

2)如果你还没有在Excel中使用VBA,我建议你先“录制”一个宏(首先让功能区中的“Developer”标签可见,然后选择“记录宏”,然后开始做打开文件,导入它们(固定宽度)。停止录制后,您将看到执行这些操作的语法 - 这应该有很多帮助

3)你必须决定如何将参数传递给VBA - 工作表上的单元格,对话框......没有“从命令行运行VBA”这样的事情。

我想知道你是否真的需要/想要VBA,或者你最好还是编译独立程序(.exe)。这是否意味着可以在PC(Windows),Mac OS或两者上运行?例如,见this earlier question - 也许这就是你真正需要的东西(如果不是你要求的......)?