macro stampa pdf con nome preso da contenuti del documento

Anonimo
2013-04-03T10:42:34+00:00

Ciao a tutti,

attraverso stampa unione genero X fatture.

Ovviamente, mi apre X documenti di word. Vorrei attraverso una macro "stampare" il pdf (oppure salvare il pdf, per me è indifferente) di ciascuna fattura assegnando come nome del file una stringa composta dal numero della fattura e dal nome dell'intestatario.

Entrambi i dati sono contenuti ovviamente nel documento ma non saprei come estrarli.

La cartella di destinazione è sempre la stessa.

Se è un problema fargli fare in automatico l'operazione avviando una sola volta la macro per tutti i documenti aperti, mi va benissimo anche avviare la macro ogni volta per ciascuno documento aperto

Grazie per il supporto.

Microsoft 365 e Office | Word | 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
2013-04-10T14:51:44+00:00

Ciao carloHD,

in questo recente thread dovrebbe esserci, più o meno, tutto ciò che può servirti:

Mi raccomando, leggilo tutto perché ci sono modifiche e miglioramenti nel corso della discussione. Se hai problemi... siamo tutti qui.

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-04-19T10:52:14+00:00

    Ciao Maurizio,

    grazie per la risposta :-)

    Scusa se rispondo solo ora, nel tempo libero sto cercando di imparare access ed è una montagna piuttosto impervia per me :-)

    Andando in topic,

    Il codice è questo:

    Public Sub Test2()

    On Error GoTo ErrH

    Dim objWdMailMerge  As Word.MailMerge

    Dim lngRecNum       As Long

    Dim strPath         As String

    Dim strFilename     As String

    Application.ScreenUpdating = False

    strPath = "C:\Users\carlo\Documents\stampaunione"

    Set objWdMailMerge = ThisDocument.MailMerge

    With objWdMailMerge

    .Destination = wdSendToNewDocument

    With .DataSource

    .ActiveRecord = wdLastRecord

    lngRecNum = .ActiveRecord

    .ActiveRecord = wdFirstRecord

    Do

    .FirstRecord = .ActiveRecord

    .LastRecord = .ActiveRecord

    strFilename = "prova in data " & .DataFields("data").Value & " test"

    If Len(strFilename) Then

    strFilename = strPath & strFilename

    objWdMailMerge.Execute

    With ActiveDocument

    .SaveAs strFilename, wdFormatPDF, AddToRecentFiles:=False

    .Saved = True

    .Close

    End With

    End If

    If .ActiveRecord = lngRecNum Then Exit Do

    .ActiveRecord = wdNextRecord

    Loop

    End With

    End With

    ExitProc:

    Application.ScreenUpdating = True

    Set objWdMailMerge = Nothing

    Exit Sub

    ErrH:

    MsgBox Err.Description

    Resume ExitProc

    End Sub

    Come test, ho creato una tabella in un file excel molto semplice:

    data / codice cliente

    01/02/2013 /  pippo_it

    02/05/2013  /  pluto_it

    In caso possa essere utile, ho caricato una cartella zippata qui:

    macro-unione.zip.html

    Grazie per il supporto :-)

    Carlo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-04-15T04:59:02+00:00

    Ciao carloHD,

    c'è qualcosa che puzza di bruciato... ;-)

    Il messaggio "Comando fallito" non è standard e, forse sbaglio, ma nemmeno è mio. Probabilmente appartiene a una routine di gestione errori modificata da te. Sarebbe interessante vedere tale routine e, soprattutto, l'istruzione che la attiva. Potresti postare il codice che usi o, meglio ancora, tutto il file (depurato dei dati sensibili e riservati)?

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-04-12T18:44:35+00:00

    Ciao Mauro,

    ottima soluzione, grazie!

    Ho anche aggiunto del testo fisso per comporre la stringa del nome del file e funziona.

    Ho una criticità che non so risolvere (nell'esempio sotto, ho aggiunto il testo " test"):

    nella macro ora c'è:

    strFilename = .DataFields("xyz").Value & " test"

    se "xyz" di .DataFields("nome").Value si riferisce a campi tipo "nome", "codice_cliente", "città" etc

    la macro funziona

    Se "xyz" si riferisce a campi tipo "data", "importo", etc, mi dà errore "Comando fallito".

    Per puro intuito mi verrebbe da pensare che si tratti del tipo di dato. Se è tipo testo la macro funziona, se "xyz" è di tipo numerico, la macro non funziona (dico bene???)

    Il mio nome file è composto dalla data, dal numero fattura e dal codice cliente. Come potrei risolvere?

    Grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2013-04-10T13:04:33+00:00

    Ciao a tutti,

    Entrambi i dati sono contenuti ovviamente nel documento ma non saprei come estrarli.

    <cut>

    Grazie per il supporto.

    *Dove* li troviamo quei dati sul sul documento?

    La risposta è stata utile?

    0 commenti Nessun commento