1

我有一个可用的 Perl 脚本,我想将它转换为 VBA 以在 Excel 宏中运行,以便可以轻松地将其共享给其他 PC。我有一个驱动 perl 脚本的 shell 脚本(我在其中传递参数)。我使用 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{$_});
}
4

1 回答 1

2

几点:

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

2)如果您没有在Excel中使用过VBA,我建议您从“录制”宏开始(首先使功能区中的“开发人员”选项卡可见,然后选择“录制宏”,然后开始执行诸如打开文件之类的操作,导入它们(固定宽度)。停止录制后,您将看到执行这些操作的语法 - 这应该会有很大帮助

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

我想知道您是否真的需要/想要 VBA,或者您是否最好编译一个独立程序 (.exe)。这意味着要在 PC(Windows)、Mac OS 或两者上运行吗?例如,请参阅这个较早的问题- 也许这就是您真正需要的(如果不是您要求的......)?

于 2013-03-07T05:08:03.347 回答