Para generar un archivo PDF independiente por cada registro del Excel combinado en Word y enviar un correo electrónico con el archivo adjunto, puedes seguir los siguientes pasos:
- Abre el documento de Word "cartas.docx" y asegúrate de que la opción "Correspondencia de correo" esté habilitada. Para hacerlo, ve a la pestaña "Correspondencia" en la cinta de opciones y haz clic en "Iniciar combinación de correspondencia" > "Cartas".
- Selecciona la fuente de datos "datos proveedor.xlsx" y asegúrate de que las variables se inserten correctamente en la carta.
- En la pestaña "Correspondencia", haz clic en "Vista previa de resultados" y asegúrate de que las cartas se vean bien.
- Para generar un archivo PDF independiente por cada registro, en lugar de uno solo con todos los registros combinados, en la pestaña "Correspondencia", haz clic en "Editar documentos individuales".
- Selecciona "Todos" y haz clic en "Aceptar". Esto creará un documento de Word independiente por cada registro del Excel combinado.
- En la pestaña "Archivo", selecciona "Guardar como" y elige "PDF" como el formato de archivo. Guarda el archivo PDF con un nombre que incluya una variable única para cada registro, como el número de proveedor o el nombre del proveedor.
- Para enviar un correo electrónico con el archivo PDF adjunto, puedes utilizar una macro de VBA. En el editor de VBA, crea una nueva macro y escribe el siguiente código:
vbnetCopy code
Sub EnviarCorreo() Dim objOutlook As Object Dim objMail As Object Dim FilePath As StringDim FileName As String Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) 'Para cada registro en el Excel, haz lo siguiente: 'Cambia "Sheet1" a la hoja donde se encuentran los datos de proveedor 'Cambia "A2" a la celda donde comienzan los datos 'Cambia "Proveedor" al nombre de la columna que contiene el nombre del proveedor 'Cambia "Correo electrónico" al nombre de la columna que contiene la dirección de correo electrónico del proveedor 'Cambia "PDFs\" al nombre de la carpeta donde se guardan los archivos PDF Dim i As Integer Dim lastrow As Integer lastrow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row For i = 2 To lastrow 'Generar el archivo PDF para el registro actual FileName = Sheets("Sheet1").Cells(i, "A").Value 'Cambia "A" a la columna que contiene una variable única para cada registro FilePath = "C:\PDFs\" & FileName & ".pdf" 'Cambia "PDFs\" a la carpeta donde se guardan los archivos PDF 'Adjuntar el archivo PDF al correo electrónico With objMail .To = Sheets("Sheet1").Cells(i, "B").Value 'Cambia "B" a la columna que contiene la dirección de correo electrónico del proveedor .Subject = "Facturación" .Body = "Estimado " & Sheets("Sheet1").Cells(i, "C").Value & "," & vbNewLine & vbNewLine & "Aquí tiene su factura." .Attachments.Add FilePath