Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Avviare macro pescandola da file chiuso

348 views
Skip to first unread message

Drago

unread,
Aug 11, 2008, 6:30:38 AM8/11/08
to
E' possibile avviare una macro pescandola da un file xls chiuso?
Se si come?
Grazie a tutti


cucchiaino

unread,
Aug 11, 2008, 6:56:56 AM8/11/08
to
Drago scrive:

> E' possibile avviare una macro pescandola da un file xls chiuso?

-----------------

ciao Drago,
non penso sia possibile.

Sapevi che è possibile scrivere codice in uno speciale file (Personal.xls)
che si apre sempre all'apertura di Excel in modalità nascosta?
Qui puoi mettere tutte le tue macro che vuoi e lanciare dalla barra degli
strumenti.

Un'altra possibilità sono i files .vbs, piccoli files di testo con dentro
codice eseguibile semplicemente lanciandoli da windows o anche da codice vba.

--
()---cucchiaino

r

unread,
Aug 11, 2008, 8:32:00 AM8/11/08
to

"Drago" ha scritto:

> E' possibile avviare una macro pescandola da un file xls chiuso?
> Se si come?
> Grazie a tutti
>
>
>

ciao,
vedi il metodo run
membro di excel.application

ciao
r

Drago

unread,
Aug 11, 2008, 1:38:27 PM8/11/08
to
Potrebbe essermi utile la seconda opzione; ovvero il file .vbs.
Potresti indicarmi qualche sito o qualche esempio da seguire per crearlo
Grazie mille

"cucchiaino" <so...@excel.it> ha scritto nel messaggio
news:eEra5D6%23IHA...@TK2MSFTNGP05.phx.gbl...

cucchiaino

unread,
Aug 13, 2008, 2:13:11 AM8/13/08
to
Drago scrive:

> Potrebbe essermi utile la seconda opzione; ovvero il file .vbs.
> Potresti indicarmi qualche sito o qualche esempio da seguire per crearlo

Qui ce n'è alcuni:

http://www.activexperts.com/activmonitor/windowsmanagement/scripts/msoffice/excel/


Mauro Gamberini ha postato in passato altri esempi su questo ng, ma
non ho sottomano i links.

--
()---cucchiaino

Reventlov

unread,
Aug 13, 2008, 5:46:53 PM8/13/08
to
Il giorno Mon, 11 Aug 2008 17:38:27 GMT, "Drago" <V_IsA...@UlSiCbOeLrEo.it> ha scritto:

>Potrebbe essermi utile la seconda opzione; ovvero il file .vbs.
>Potresti indicarmi qualche sito o qualche esempio da seguire per crearlo

<pubblicità>Io ho scritto del codice in vbs che ho in parte pubblicato sul sito qui sotto.
C'è una pagina su come comandare excel da vbs.<\pubblicità>
Gli script vbs sono solo dei file di testo con dei comandi molto simili a vb o vba. Solo
che hanno estensione vbs.
E' solo un sito amatoriale, senza pubblicità e con pochissime immagini. C'è di buono che è
in italiano.
Per la tua domanda, rispondo che è possibile da vbs aprire il file con la macro, farla
partire e poi chiudere tutto. Anche senza mostrare la finestra di excel.
Giovanni.

--
Giovanni Cenati (Bergamo, Italy)
Write to "Reventlov" at katamail com
http://digilander.libero.it/Cenati (Esempi e programmi in VbScript)
--

r

unread,
Aug 15, 2008, 12:17:01 PM8/15/08
to

"Reventlov" ha scritto:

ciao giovanni,
confermo ... io ho trovato molti
spunti interessanti nel tuo sito,
e consiglio a tutti la visita.
saluti
r

Maurizio Borrelli

unread,
Aug 16, 2008, 6:57:36 AM8/16/08
to
"Drago" wrote in message
news:ixUnk.41825$Ca.1...@twister2.libero.it:

> E' possibile avviare una macro pescandola da un file xls chiuso?
> Se si come?

Ciao Drago.

Invero fornisci ben poche informazioni per chiarire la tua situazione
reale comunque in linea di massima con un file chiuso non ci puoi far
nulla. In qualche modo dovrai pur sempre aprirlo. Se interpreto
correttamente almeno l`ordine del problema che hai deciso di affrontare,
dopo aver letto anche l`altro tuo thread in cui parlavi di un file
principale e di altri file contenenti tutti la stessa macro, una
soluzione potrebbe essere del tipo seguente:

' Modulo1 - Modulo standard
'
Option Explicit

Public Sub EseguiMacroEsterna(ByVal Path As String _
, ByVal Filename As String _
, ByVal Macro As String)
Dim objRef As VBIDE.Reference
Dim blnFound As Boolean
Dim strProjectName As String
Dim blnWasOpen As Boolean

blnWasOpen = WorkbookIsOpen(Filename)
With Application
With .ThisWorkbook
For Each objRef In .VBProject.References
With objRef
If .FullPath = Path & Filename Then
strProjectName = .Name
blnFound = True
Exit For
End If
End With
Next
If blnFound = False Then
With .VBProject.References
Set objRef = .AddFromFile(Path & Filename)
End With
strProjectName = objRef.Name
End If
End With
.Run strProjectName & "." & Macro
With .ThisWorkbook
.VBProject.References.Remove objRef
End With
If blnFound = False Then
If blnWasOpen = False Then
Workbooks.Item(Filename).Close False
End If
End If
End With

Set objRef = Nothing
End Sub

Private Function WorkbookIsOpen(ByVal Index _
As Variant) As Boolean
On Error Resume Next
WorkbookIsOpen = IsObject(Workbooks.Item(Index))
End Function

Da usare per esempio cosi`:

Public Sub Test()
Const cPath = "D:\Percorso\"
Const cFileName = "Cartel1.xls"
Const cMacroName = "Test"

EseguiMacroEsterna cPath, cFileName, cMacroName

End Sub

IMPORTANTE: Il file contenente la routine "EseguiMacroEsterna" dovra`
avere un nome di progetto *diverso* da quello di default, che e`
"VBAProject". Io ho usato "PMain".

Personalmente pero` userei questo metodo solo in casi estremi, o piu`
precisamente mai. ;-)


(Facci sapere se e eventualmente come hai risolto. Grazie!)

--
Ciao!
Maurizio Borrelli [Microsoft MVP Office System]
http://www.riolab.org/


Drago

unread,
Aug 18, 2008, 6:38:41 AM8/18/08
to
Rispiego meglio cosa vorrei fare
In automatico (tramite codice) creo un altro file di excel che cambia di
volta in volta nome (es. Cartel1 - Cartel2 - Cartel10 etc); in questo nuovo
File xls creato, è presente un codice che io dovrei attivare in qualche
modo. (Non all'apertura). Ho provato in vadi modi ma non riesco a farglielo
leggere. L'ideale sarebbe sempre in automatico far chiudere il file e quindi
attivare la macro. Se volessi percorrere questa strada, che codice dovrei
attaccare nel nuovo file creato?
Spero di essere stato esauriente.

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:Ojnuq74$IHA....@TK2MSFTNGP05.phx.gbl...

Drago

unread,
Aug 18, 2008, 6:40:03 AM8/18/08
to
Scusate,
Ho risposto pensando che la domanda fosse riferita ad un'altro tread che
avevo aperto


"Drago" <V_IsA...@UlSiCbOeLrEo.it> ha scritto nel messaggio
news:Ricqk.44275$Ca.1...@twister2.libero.it...

0 new messages