Macro Excel: Copiar celda en otra hoja para imprimir

Tengo una macro de exportación a PDF de un informe ya hecha. Este informe varia según un número de referencia, listado en otra hoja del libro excel.

Quisiera hacer una macro para que se ejecute la exportación de todos los informes en una sola vez, utilizando la función Loop pero no consigo crear-lo.

En la Hoja1 tengo una tabla como esa.

A=numero B=Nombre

428 a

719 g

2887 t

3275 w

3409 b

En la columna A, hay números no corelativos sin repetidos. En la columna B, el nombre correspondiente, sin repatidos tampoco.

Quiero que en la Hoja2, se copie sucesivamente el numero de la columna A de la Hoja1, hasta que la columna esté vacía y se imprime, cada ves el informe de la Hoja2

He aconseguido hacer la copia de la celda pero no se como hacer el loop para que cada vez seleccione una celda diferente A2 luego A3, luego A4...

Private Sub CommandButton1_Click()
Hoja2.Cells(2, 3) = Hoja1.Cells(3, 1)
Hoja2.Select
archi = ThisWorkbook.Path & "\" & Range("C2").Value & " _ " & Range("C7").Value & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archi, Quality:=xlQualityHigh, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
MsgBox "Informe creat", vbInformation

End Sub

1 respuesta

Respuesta
1

Te anexo la macro con el ciclo, para pasar cada dato de la columna "A" de la hoja1 a la celda C2 de la hoja2

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    For i = 3 To Hoja1.Range("A" & Rows.Count).End(xlUp).Row
        Hoja2.[C2] = Hoja1.Cells(i, "A")
        archi = ThisWorkbook.Path & "\" & Hoja2.[C2] & " _ " & [C7] & ".pdf"
        Hoja2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archi, _
            Quality:=xlQualityHigh, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
    Next
    MsgBox "Informe creat", vbInformation
End Sub

Prueba y me comentas.

Saludos. Dante Amor

Si es lo que necesitas.

¡Gracias! 

Funciona correctamente. 

Hola Dante,

Tengo un problema en aplicar la macro en el libro donde tengo los datos.

Problema 1: Las hojas no se llaman "Hoja1" y "Hoja2" si no PROV y INFORME. ¿Cómo tengo que ponerlo?

Problema 2: La hoja INFORME contiene todo una serie de fórmulas que estiran datos de una tercera Hoja llamada CALCULO. El informe cambia cada ves que cambia el dato de la célula V2 de la hoja INFORME. El problema es que no todos los datos de la hoja PROV tienen datos en la hoja CALCULO por lo que la hoja INFORME puede dar error. En este caso, no debería ejecutar la macro. No se si se puede añadir una comprobación de que el número escogido en la Hoja PROV exista en la hoja CALCULO (columna B)

¿Tiene solución?

Gracias

Te anexo la macro actualizada

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    Set h1 = Sheets("PROV")
    Set h2 = Sheets("INFORME")
    Set h3 = Sheets("CALCULO")
    '
    For i = 3 To h1.Range("A" & Rows.Count).End(xlUp).Row
        Set b = h3.Columns("B").Find(h1.Cells(i, "A"))
        If Not b Is Nothing Then
            h2.[C2] = h1.Cells(i, "A")
            archi = ThisWorkbook.Path & "\" & Hoja2.[C2] & " _ " & [C7] & ".pdf"
            h2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=archi, _
                Quality:=xlQualityHigh, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, OpenAfterPublish:=False
        End If
    Next
    MsgBox "Informe creat", vbInformation
End Sub

Saludos.Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas