Combinar correspondencia en archivos pdf individuales, con nombre.

Marcos, Vicerrector de la Universidad Politécnica de Cartagena, donde trabajo, tiene que hacer unos certificados por la asistencia a unos cursos que organiza su vicerrectorado. Son más de doscientos asistentes a los que enviar un certificado de asistencia con su nombre. La combinación de correspondencia de Word permite hacer los certificados personalizados, pero no permite guardar cada uno con su nombre, es decir, combinar en pdf individuales.

Estas son las entradas sobre el tema en el blog y este es mi curso sobre combinación de correspondencia en YouTube. En este último curso sobre combinación de correspondencia veos cómo, con la ayuda de pdf, podemos combinar y enviar adjuntos por correo electrónico. Lo que no podemos hacer, con las funcionalidades integradas de Word, es finalizar la combinación de correspondencia en archivos pdf individuales con nombre. Lo podríamos hacer instalando algún complemento como los que cito en Adjuntar archivos distintos en combinación de correspondencia.

La solución, por tanto, será una Macro como la que propongo en esta entrada.

Combinar en pdf individuales
Muestra un ejemplo de datos para combinación de correspondencia
Un ejemplo de base de datos para Combinación de correspondencia.

Este código en VBA incluye las explicaciones sobre su funcionamiento:

Sub Merge_To_Individual_Files()
'Combina cada registro, en formato pdf, con el nombre del campo CORREO, a la carpeta en la que está este documento de combinación
'Creado por https://wordexperto.com/
Application.ScreenUpdating = False
Dim StrFolder As String, StrName As String, MainDoc As Document, i As Long, j As Long
Const StrNoChr As String = """*./\:?|"
Set MainDoc = ActiveDocument
With MainDoc
StrFolder = .Path & Application.PathSeparator
For i = 1 To .MailMerge.DataSource.RecordCount
With .MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = i
.LastRecord = i
.ActiveRecord = i
If Trim(.DataFields("CORREO")) = "" Then Exit For
'StrFolder = .DataFields("Folder") & Application.PathSeparator
StrName = .DataFields("CORREO")
End With
On Error Resume Next
.Execute Pause:=False
If Err.Number = 5631 Then
Err.Clear
GoTo NextRecord
End If
End With
For j = 1 To Len(StrNoChr)
StrName = Replace(StrName, Mid(StrNoChr, j, 1), "_")
Next
StrName = Trim(StrName)
With ActiveDocument
.SaveAs FileName:=StrFolder & StrName & ".pdf", FileFormat:=wdFormatPDF, AddToRecentFiles:=False
.Close SaveChanges:=False
End With
NextRecord:
Next i
End With
Application.ScreenUpdating = True
End Sub

Si te ha gustado, puedes seguir el blog para estar al corriente de las nuevas entradas. Espero tus comentarios y sugerencias para nuevos temas.

También puedes visitar el Curso avanzado de Word en mi canal de YouTube.

Deja una respuesta