2013-03-06 2 views
1

У меня есть рабочий скрипт Perl, который я бы хотел преобразовать в VBA для запуска в макросе Excel, чтобы он мог быть легко доступен для других ПК. У меня есть сценарий оболочки (где я передаю параметры), управляющий скриптом perl. Я использовал скрипт Perl для чтения каждого указанного столбца всех строк данных из файла с фиксированной шириной (ниже начала 54,63) и сравнить эти данные с другим файлом и распечатать разницу. Я передал бы параметры в сценарии оболочки как runpro.pl filea.txt fileb.csv > myoutput.txt Любая помощь была бы замечательной! Особенно, если кто-то может указать мне в правильном направлении, так как код довольно прост. Благодаря!Преобразование Perl Script в VBA Script

#!/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{$_}); 
} 
+0

Можете ли вы привести пример того, как вы будете использовать функцию VBA - как вы передаете параметры и где вы хотите вывести вывод? Это не совсем ясно из вашего вопроса ... – Floris

+0

Я отредактировал с приведенным выше примером. Благодарю. @Floris – todayspresent

+0

Проверьте это: http://docs.activestate.com/activeperl/5.6/faq/Windows/ActivePerl-Winfaq12.html «Если вы записываете макрос в Microsoft Office, это часто можно перевести непосредственно в Perl». – isomorphismes

ответ

1

Пару моментов:

1) VBA является очень отличается от Perl - так вещи, которые однострочечники в одном будет сложно в другом

2) Если вы не использовали VBA в Excel, я предлагаю вам начать с «записи» макроса (сначала сделайте вкладку «Разработчик» на ленте видимой, затем выберите «записать макрос» и начните делать такие вещи, как открытие файлов, их импорт (фиксированный ширина). После того, как вы остановите запись, вы увидите синтаксис для выполнения этих действий - это должно помочь много

3) Вам нужно будет решить, как вы хотите передать аргументы VBA-ячейкам на листе, в диалоговом окне ... Нет такой вещи, как «запуск VBA из командной строки».

Интересно, действительно ли вам нужен VOB или нужен VBA, или если вам будет лучше скомпилировать отдельную программу (.exe). Это означает, что вы работаете на ПК (Windows), Mac OS или обоих? См. Например, this earlier question - может, это то, что вам действительно нужно (если не то, что вы просили ...)?