vba ciclo for per compilare documenti Word

Anonimo
2016-02-04T16:23:02+00:00

Ciao a tutti, 

con un ciclo for vado a compilare dei documenti word in serie con i segnalibri. Il problema è che compila solo il primo, al secondo mi da errore di run time 91: Variabile oggetto o variabile del blocco With non impostata. L'errore mi viene dato sulla riga in cui setto il word document (set doc=wmodulo....). Cosa sbaglio? 

Grazie 

Mario

Dim doc As Word.Document<br> Dim wmodulo As Word.Application<br> Dim i, a As Integer<br> Dim filepath, filepath2 As String<br> <br> filepath = "Q:\Comune\LP"<br> filepath2 = "Q:\Comune\LP\Mario"<br> Set wmodulo = CreateObject("Word.Application")<br> i=20<br> <br> For a = 1 To i<br> <br> FileCopy filepath & "LP BASE.docx", filepath2 & "LP " & a & " " & Format(Now(), "yyyy-mm-dd") & " .docx" <br> <br> Set doc = wmodulo.Documents.Open(filepath2 & "LP " & a & " " & Format(Now(), "yyyy-mm-dd") & " .docx")<br> <br> With doc<br> .Bookmarks("gross").Select<br> wmodulo.Selection.TypeText Format(Range("g" & a), "###,####,###.00") <br> End With<br> <br> wmodulo.Quit <br> Set doc = Nothing<br> Set wmodulo = Nothing<br> <br> Next
Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2016-02-04T16:36:57+00:00

Io non utilizzo questo modo dialogare con Word.

Ad ogni modo, prova a modificare questa parte:

    wmodulo.Quit

    Set doc = Nothing

    Set wmodulo = Nothing

Così:

   doc.save

   doc.close

   Set doc = Nothing

E fuori dal ciclo For, quindi dopo il Next:

wmodulo.Quit

Set wmodulo = Nothing

Ma ho capito davvero poco...

La risposta è stata utile?

0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2016-02-04T17:09:53+00:00

    Per *svincolare* il codice dalla versione di Word (che devi specificare nei riferimenti), puoi *astrarre* il codice. Qui un semplice esempio:

    Dim objWord As Object

    Dim objDoc As Object

    Set objWord = CreateObject("Word.Application")

    Set objDoc = objWord.Documents.Open(sPath & sNomeFile)

        'ecc

    Ma, se non hai il problema di più versioni di Office, continua come hai sempre fatto.

    Ciao e alla prossima.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-02-04T16:45:50+00:00

    ciao Mauro,

    grazie mille per la risposta, ho risolto come hai suggerito. Quale metodo dovrei usare per comunicare con Word?

    La risposta è stata utile?

    0 commenti Nessun commento