PDA

View Full Version : [VBA] - lanciare un foglio di excel passandogli come argomento


misterx
20-09-2004, 15:20
da una file batch, devo lanciare un foglio di excel passandogli come argomento un altro foglio di excel che contiene delle macro, in più, devo passare un valore numerico che rappresenta il numero del foglio da elaborare all'interno della cartella


esempio:
excel.exe fogliodilavoro1 5 fogliodilavoro2

dove fogliodilavoro1 è il foglio che contiene la macro e fogliodilavoro2 è il foglio da processare

così a me non funziona :(

misterx
20-09-2004, 16:47
anche riuscire a catturare gli argomenti passati a Excel non sarebbe male, esempio:


Excel.exe argomento.xls 5

cells(1,1) = "argomento.xls" 'come stringa

cells(2,1) = 5 'come stringa

ocio che è solo un esempio e non funziona :D

cionci
20-09-2004, 16:49
Perchè non ti fai una macro al'interno di Fogliodilavoro1 ?

misterx
20-09-2004, 16:55
ho già una macro in "fogliodilavoro1" che dovrebbe elaborare "fogliodilavoro2"

il problema per me non essendo un cultore di VBA è come leggere o passare gli argomenti

nel C hai "argc" = counter ed "argv" = vector ma in VBA ?

mi andrebbe bene anche la seconda ipotesi in quanto lancerei fogliodilavoro1 nel modo:


excel.exe fogliodilavoro1 fogliodaelaborare NumeroDelFogliodaElaborare

misterx
21-09-2004, 14:19
azz, abbandonato alla grande

chissà quell'a2OOO dove diamine è finito :D


altro problema

in Foglio1 ho un componente ListBox e nel codice del Foglio1 alcune macro

una l'ho chiamata paperino ma non c'è verso di lanciarla all'apertura del file di excel, sembra che manchi il riferimento, cos'è sbagliato ?


Private Sub Workbook_Open()
paperino
End Sub

misterx
21-09-2004, 14:24
per intendersi meglio

misterx
21-09-2004, 16:06
ho risolto da me, grazie lo stesso :)

misterx
21-09-2004, 20:05
Originariamente inviato da misterx
ho già una macro in "fogliodilavoro1" che dovrebbe elaborare "fogliodilavoro2"

il problema per me non essendo un cultore di VBA è come leggere o passare gli argomenti

nel C hai "argc" = counter ed "argv" = vector ma in VBA ?

mi andrebbe bene anche la seconda ipotesi in quanto lancerei fogliodilavoro1 nel modo:


excel.exe fogliodilavoro1 fogliodaelaborare NumeroDelFogliodaElaborare


ho provato da una shell di MS-DOS a digitare:

excel.exe file1.xls file2.xls file3.xls

e funziona

perchè in un file batch no ?

cionci
21-09-2004, 20:26
Originariamente inviato da misterx
ho provato da una shell di MS-DOS a digitare:

excel.exe file1.xls file2.xls file3.xls

e funziona

perchè in un file batch no ?
Ma così te li apre tutti e tre...

Non capisco una cosa... Tu sai a priori i file da aprire ? In tal caso non hai bisogno del passaggiod ei aprametri da riga di comando...

misterx
21-09-2004, 20:34
si, conosco a priori il file da aprire

il trucco che mi è venuto in mente è che se io apro in sequenza e sempre:
prima il file da elaborare e poi il file che contiene la macro dovrei essere a posto

usando poi le diavolerie di VBA poi :

workbooks(1) che è il file1.xls quello con i dati e senza macro
e
workbooks(2) che è il file2.xls quello con la macro dovrei essere a posto

ma usando il file batch per aprire i 2 file non funziona

ho notato che i file batch vengono eseguiti in modo differente a seconda del'SO (win98/win2k/winXP)

purtroppo si è creato un ulteriore problema
il file1.xls (quello con i dati) è composto da più fogli di lavoro ed io avrei bisogno di passare al foglio che contiene la macro un valore numerico che rappresenta il numero di foglio da elaborare

al momento attuale sono costrtto ad elaborarli tutti di defaul:muro:

non so se sono riuscito a spiegare il mio problema

cionci
21-09-2004, 20:36
Ma se in foglio1.xls tramite VBA apri anche foglio2.xls e foglio3.xls non fai prima ?!?!?!

Dal batch apri solo foglio1.xls e tutti e tre i file si apriranno da soli...

misterx
21-09-2004, 20:42
aspetta, la questione è molto più complessa, io per brevità ho raccontato solo una parte della storia


ci sono decine di file di dati ed io non so a priori quale l'utente decide di far elaborare alla mia macro


hanno tutti il medesimo formato ma i dati contenuti sono diversi ed in più, sono "spalmati" su più fogli di lavoro


lui deve elaborare tali file lanciando Excel con un file batch seguendo una sintassi ben precisa

Excel.exe fogliodati.xls foglioconmacro.xls [numero del foglio in fogliodati.xls ???]


[numero del foglio in fogliodati.xls ???] = è il problema maggiore

misterx
22-09-2004, 21:06
we a2000.1:muro: