Condividi tramite

Generare da stampa unione più documenti pdf

Anonimo
2015-08-31T10:03:48+00:00

Ciao da un documento word legato ad un excel devo creare singoli file nominandoli con i nomi e cognome del candidato. Qualcuno mi può aiutare? Passo per passo perchè sono una frana...ho provato a creare la macro mille volte.

Grazie mille

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

8 risposte

Ordina per: Più utili
  1. Anonimo
    2015-08-31T12:55:51+00:00

    Ciao Barbara,

    Per le mie prove ho

    creato un file Excel con una tabella Excel di nomi e ho utillizato Nome e Cognome come le intestazione della tabella

    In un file Word ho creato, a mano, un documento MailMerge, legando il documento alla tabelle Excel.

    In un modulo standard del file Word, ho incollato il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim MyDoc As Document

        Dim sStr As String, sFolder As String, sName As String, sPath As String

        Dim i As Long, j As Long

        On Error GoTo ErrHandler

        With Application

            sStr = .PathSeparator

            .ScreenUpdating = False

        End With

        Set MyDoc = ThisDocument

        With MyDoc

            sFolder = .Path & sStr

            For i = 1 To .MailMerge.DataSource.RecordCount

                With .MailMerge

                    .Destination = wdSendToNewDocument

                    .SuppressBlankLines = True

                    With .DataSource

                        .FirstRecord = i

                        .LastRecord = i

                        .ActiveRecord = i

                        If Trim(.DataFields("Nome")) = "" Then

                            Exit For

                        End If

                        sName = .DataFields("Cognome") _

                              & "_" _

                              & .DataFields("Nome")

                    End With

                    .Execute Pause:=False

                End With

                For j = 1 To 255

                    Select Case j

                    Case 1 To 31, 33, 34, 37, 42, 44, 46, 47, _

                         58 - 63, 91 - 93, 96, 124, 147, 148

                        sName = Replace(sName, Chr(j), "")

                    End Select

                Next

                sName = Trim(sName)

                With ActiveDocument

                    .SaveAs FileName:=sPath & sName & ".pdf", _

                            FileFormat:=wdFormatPDF, _

                            AddToRecentFiles:=False

                    .Close SaveChanges:=False

                End With

            Next i

        End With

    XIT:

        On Error GoTo 0

        Application.ScreenUpdating = True

        Exit Sub

    ErrHandler:

        Call MsgBox(Prompt:=Err.Description & " " & Err.Number, _

                    Buttons:=vbCritical, _

                    Title:="Errore")

        Resume XIT

    End Sub

    '<<=========

    Legando il documento MailMerge al mio file Excel precedente (Barbara20150831.xlsm ), ci sono stati salvati 26 file pdf. uno per ciascun nome della tabella.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    4 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2015-09-01T10:44:52+00:00

    Ciao Nicola,

    Grazie a te per la comprensione.

    Ho postato una procedura in una risposta nel nuovo thread.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Anonimo
    2015-08-31T11:34:13+00:00

    Ciao Barbara,

    Ti prego di ignorare la mia risposta precedente,  perché mi rendo  che ho letto male la tua domanda.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-08-31T11:19:15+00:00

    Ciao,

    perdonami ma non ho capito nulla... io ho un file word con stampa unione e voglio creare più documenti pdf nominandoli con nome e cognome del candidato. Quindi presumo che la macro devo crearla su word... ho provato anche questo

    ' Modulo1 - Modulo

    '

    Option Explicit

    Public Sub Test()

    On Error GoTo ErrH

    Dim mm As Word.MailMerge

    Dim i

        Application.ScreenUpdating = False

        Set mm = ThisDocument.MailMerge

        With mm

          .Destination = wdSendToNewDocument

          With .DataSource

            For i = 1 To .RecordCount

              .FirstRecord = i

              .LastRecord = i

              mm.Execute

              With Application.ActiveDocument

                .SaveAs "D:\Percorso" & Format(i, "0000") _

                      , wdFormatPDF _

                      , AddToRecentFiles:=False

                .Saved = True

                .Close

              End With

            Next

          End With

        End With

    ExitProc:

        Application.ScreenUpdating = True

        Set mm = Nothing

        Exit Sub

    ErrH:

        MsgBox Err.Description

        Resume ExitProc

    End Sub

    Help me è tutta la mattina che smanetto ma mi dice oggetto non trovato. Ripeto sono neofita necesitto di tutti i passaggi come dev'essere salvato il doc word masco ecc.

    Grazie mille

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2015-08-31T10:59:52+00:00

    Ciao Barbara,

    Ciao da un documento word legato ad un excel devo creare singoli file nominandoli con i nomi e cognome del candidato. Qualcuno mi può aiutare? Passo per passo perchè sono una frana...ho provato a creare la macro mille volte.

    Se la tabella dei nomi e cognomi si trova nel file Excel, prova qualcosa del genere:

    • Alt-F11 per aprire l'editor di VBA
    • Alt-IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        Dim WB As Workbook

        Dim SH As Worksheet, SH2 As Worksheet

        Dim Rng As Range, Rng2 As Range

        Dim arrIn As Variant

        Dim sStr As String

        Dim LRow As Long, i As Long

        Const NomeDelFoglioConTabellaNomi = "Foglio1"     '<<==== Modifica

        Set WB = ThisWorkbook

        Set SH = WB.Sheets(NomeDelFoglioConTabellaNomi)

        Set Rng = ActiveCell

        With SH

            LRow = LastRow(SH, .Columns("A:A"))

            Set Rng2 = .Range("A2:B" & LRow)

        End With

        arrIn = Rng2.Value

        Application.ScreenUpdating = False

        For i = 1 To UBound(arrIn, 1)

            sStr = arrIn(i, 1) & Space(1) & arrIn(i, 2)

            With WB

                Set SH2 = .Sheets.Add(after:=.Sheets(.Sheets.Count))

                SH2.Name = sStr

            End With

        Next i

        Application.Goto Rng

    XIT:

        Application.ScreenUpdating = True

    End Sub

    '--------->>

    Public Function LastRow(SH As Worksheet, _

                     Optional Rng As Range)

        If Rng Is Nothing Then

            Set Rng = SH.Cells

        End If

        On Error Resume Next

        LastRow = Rng.Find(What:="*", _

                           after:=Rng.Cells(1), _

                           Lookat:=xlPart, _

                           LookIn:=xlFormulas, _

                           SearchOrder:=xlByRows, _

                           SearchDirection:=xlPrevious, _

                           MatchCase:=False).Row

        On Error GoTo 0

    End Function

    '<<========= 

    • Alt-Q per chiudere l'editor di VBA e tornare a Excel.
    • Alt-F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester | Esegui

    Se non si hai familiarità con le macro, ti consiglio il seguente articolo eccellente di Mauro:

    **http://answers.microsoft.com/it-it/office/wiki/office\_2013\_release-excel/excel-dove-e-come-inserire-il-codice-visual-basic/ed29ee63-a537-4e5d-8631-76766cf40503**

     Potresti scaricare il mio file di prova Barbara20150831.xlsm a:

                               **http://1drv.ms/1Jw7scI**

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento