Condividi:        

Macro in Excel per eseguire macro Word

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro in Excel per eseguire macro Word

Postdi formica79 » 01/09/16 17:00

Buongiorno a tutti visto che il grande Anthony mi ha risolto brillantemente un'altro problema perchè non provarci ancora?? :)

Avrei necessità di aprire un file word ( dove all'interno vi è una stampa unione di etichette di spedizione) ed eseguire la stampa di tutti i record presenti...

Per ora io ho registrato una macro in Word che mi stampa correttamente il tutto ma se possibile (credo che lo sia) vorrei lanciare suddetta macro di Word direttamente da Excel.

Gironzolando in rete ho trovato questo codice molto semplice ma che non riesco a far funzionare...in quanto una volta lanciata la macro excel mi restituisce come errore il messaggio -Attendere un'altra applicazione sta completando un'azione OLE.. questo messaggio mi compare 4 o 5 volte per poi terminare con -comando non eseguito

Codice: Seleziona tutto
Sub WDTest()
      Dim WD as Object

      Set WD = CreateObject("Word.Application")

      WD.Documents.Open "C:\My Documents\WordDoc.Docm"

      ' Note that the project name and module name are required to
      ' path the macro correctly.
      WD.Run "Normal.NewMacros.Stampa"

   End Sub
            


In alternativa avevo pensato di far in modo che word lanci la propria macro in automatico all'apertura del file che però dovrebbe essere lanciata sempre da excel....ma anche qui sono bloccato in quanto riesco ad aprire il file ma non a fare in modo che si "auto lanci"...

Per fare questo ho usato in word il seguente codice

Codice: Seleziona tutto
Sub auto_open()
'
' auto_open Macro
'
'
With ActiveDocument.MailMerge
        .Destination = wdSendToPrinter
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
    End With
   
End Sub


Qualcuno gentilmente riesce a darmi qualche dritta :oops:
formica79
Utente Junior
 
Post: 12
Iscritto il: 13/07/16 17:25

Sponsor
 

Re: Macro in Excel per eseguire macro Word

Postdi Anthony47 » 05/09/16 02:19

La Sub WDTest per essere eseguita richiede che il file "C:\My Documents\WordDoc.Docm" non sia gia' in uso.
Raccomando di inserire prima di End Sub queste istruzioni:
Codice: Seleziona tutto
'Aggiungere:
WD.ActiveDocument.Close 0   'Chiudi senza salvare
WD.Quit                     'Chiudi oggetto WD..
Set WD = Nothing            ' .. e rilasci risorse
End Sub

Credo che quando apri il file via macro la Sub auto_open non venga eseguita; se vuoi usare quel metodo, inserisci il codice all'interno del modulo vba ThisDocument col titolo Private Sub Document_Open (invece che Sub auto_open).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro in Excel per eseguire macro Word

Postdi formica79 » 10/09/16 09:21

Ciao Anthony e grazie per la risposta...

premetto che la macro di WORD che riporto se lanciata da word funziona e lancia la stampa dei record della stampa unione...

al lancio da excel invece mi riporta il seguente errore

Errore di runtime 5852 l'oggetto richiesto non è disponibile

Il debug mi evidenzia la seguente riga della macro

Codice: Seleziona tutto
.Destination = wdSendToPrinter



Il codice intero della macro di word è

Codice: Seleziona tutto
Sub STAMPA_ZANZER()
'
' STAMPA_ZANZER Macro
'
'
    With ActiveDocument.MailMerge
        .Destination = wdSendToPrinter
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
End Sub
formica79
Utente Junior
 
Post: 12
Iscritto il: 13/07/16 17:25

Re: Macro in Excel per eseguire macro Word

Postdi Anthony47 » 12/09/16 14:35

Ma la Sub STAMPA_ZANZER dove e' inserita (nel file Word, o nel file Excel) e come viene lanciata?
Dovresti anche indicare quale versione di Office usi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro in Excel per eseguire macro Word

Postdi formica79 » 15/09/16 18:43

Anthony47 ha scritto:Ma la Sub STAMPA_ZANZER dove e' inserita (nel file Word, o nel file Excel) e come viene lanciata?
Dovresti anche indicare quale versione di Office usi.

Ciao

Excel 2016 e la macro e in word...
Che non venga lanciata credo sia appurato...credevo che in quel codice vi fosse il lascio di stampa_zanzer
formica79
Utente Junior
 
Post: 12
Iscritto il: 13/07/16 17:25

Re: Macro in Excel per eseguire macro Word

Postdi Anthony47 » 16/09/16 00:07

Non riusciamo a sintonizzarci... ma credo di aver capito che quella macro non viene richiamata da nessuna Private Sub Document_Open (ne' dalla Sub auto_open), quindi nella macro Excel in qualche punto avrai iserito un comando del tipo
WD.Run "Normal.NewMacros. STAMPA_ZANZER"

Tieni presente che "Normal.NewMacros" indicano il percorso in cui si trova la macro, cosa che determini aprendo l'editor delle macro (da Word, Alt-F11), nel frame Progetto a sinistra:
Immaginehosting immagini

Una macro posizionata all'interno del modulo NewMacros evidenziato la richiami con
"Normal.NewMacros.STAMPA_ZANZER"
Una posizionata nel NewMacros del documento la richiami con
"NewMacros.STAMPA_ZANZER"

Ma questo probabilmente gia' lo fai, altrimenti non avresti l'Errore di runtime 5852.

Ora mi chiedo: la macro Excel (quella che apre Word, il Documento e poi lancia la Sub STAMPA_ZANZER) dove resiede? Sul file che rappresenta il database di word per il MailMerge? Se Si allora prova a spostare la macro su un nuovo file Excel, chiudere il file che serve a MailMerge e riprovare.

Se comunque l'errore ricompare, fai anche questa prova:
-vai in debug sull'errore di Word
-premi Contr-g per aprire la finestra "Immediata"
-digita
Codice: Seleziona tutto
?wdSendToPrinter
e indica nel tuo prossimo messaggio che cosa viene visualizzato in risposta.

Dimmi ancora: prima del messaggio di errore, compare qualche altro messaggio?
Infine, per favore confermami anche che se apri il file Word e lanci la Sub STAMPA_ZANZER tutto viene stampato secondo le aspettative.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro in Excel per eseguire macro Word

Postdi formica79 » 16/09/16 17:28

domattina faccio le prove che mi chiedi e ti rispondo
formica79
Utente Junior
 
Post: 12
Iscritto il: 13/07/16 17:25

Re: Macro in Excel per eseguire macro Word

Postdi formica79 » 17/09/16 08:07

Anthony47 ha scritto:Non riusciamo a sintonizzarci... ma credo di aver capito che quella macro non viene richiamata da nessuna Private Sub Document_Open (ne' dalla Sub auto_open), quindi nella macro Excel in qualche punto avrai iserito un comando del tipo
WD.Run "Normal.NewMacros. STAMPA_ZANZER"

Tieni presente che "Normal.NewMacros" indicano il percorso in cui si trova la macro, cosa che determini aprendo l'editor delle macro (da Word, Alt-F11), nel frame Progetto a sinistra:
Immaginehosting immagini

Una macro posizionata all'interno del modulo NewMacros evidenziato la richiami con
"Normal.NewMacros.STAMPA_ZANZER"
Una posizionata nel NewMacros del documento la richiami con
"NewMacros.STAMPA_ZANZER"

Ma questo probabilmente gia' lo fai, altrimenti non avresti l'Errore di runtime 5852.

Ora mi chiedo: la macro Excel (quella che apre Word, il Documento e poi lancia la Sub STAMPA_ZANZER) dove resiede? Sul file che rappresenta il database di word per il MailMerge? Se Si allora prova a spostare la macro su un nuovo file Excel, chiudere il file che serve a MailMerge e riprovare.

Si la macro excel che dovrebbe aprire e stampare il documento è su excel che rappresenta il database...
Ho provato a spostare la macro in un nuovo file ma mi ritrovo con l'errore
L'oggetto richiesto non è disponibile errore runtime 5852

Codice: Seleziona tutto
.Destination = wdSendToPrinter




Se comunque l'errore ricompare, fai anche questa prova:
-vai in debug sull'errore di Word
-premi Contr-g per aprire la finestra "Immediata"
-digita
Codice: Seleziona tutto
?wdSendToPrinter
e indica nel tuo prossimo messaggio che cosa viene visualizzato in risposta.

Facendo cosi excel va in "blocco" e mi ripete allo sfinimento...attendere un'altra applicazione sta completando un azione OLE...devo forzare la chiusura se no continua all'infinito

Dimmi ancora: prima del messaggio di errore, compare qualche altro messaggio?no nessun altro errore
Infine, per favore confermami anche che se apri il file Word e lanci la Sub STAMPA_ZANZER tutto viene stampato secondo le aspettative.

Lanciando la macro di word ricevo lo stesso errore di excel oggetto non disponibile
Codice: Seleziona tutto
.Destination = wdSendToPrinter


Ciao


Spero di aver esaudito le tue richieste....ovvio che se reputi che la strada che ho pensato io sia troppo complicata proverò a trovare una alternativa...mica voglio farti impazzire...come al solito grazie ancora per l'aiuto e ti auguro buon week end
formica79
Utente Junior
 
Post: 12
Iscritto il: 13/07/16 17:25

Re: Macro in Excel per eseguire macro Word

Postdi Anthony47 » 18/09/16 17:22

Io direi che questa discussione e' da chiudere perche' troppo confusa...
Se la macro di Word non funziona in Word e' inutile chiedersi come eseguire quella macro da Excel.

Quindi eventualmente apri una nuova discussione per risolvere l'errore sulla macro di Word; quando la macro funzionera' allora ci chiederemo "come eseguirla da Excel".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro in Excel per eseguire macro Word":


Chi c’è in linea

Visitano il forum: Nessuno e 127 ospiti