1

他のPCと簡単に共有できるように、Excelマクロで実行するためにVBAに変換したいPerlスクリプトがあります。perlスクリプトを駆動するシェルスクリプト(パラメーターを渡す場所)があります。Perlスクリプトを使用して、固定幅のファイル(開始より下は54,63)からデータのすべての行の指定された各列を読み取り、そのデータを別のファイルと比較して、差を出力しました。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 に答える