Error al ejecutar macro para generar Boleta de Pago en PDF

Los integrantes de foro, vengo a solicitar su ayuda con esta macro la cual me permite generar boleta de pago en forma individual, al elegir el primer nombre de la lista que muestra en formulario, si genera el archivo PDF con su propio nombre en forma ok, pero cuando elijo el segundo al décimo nombre ya no me genera la su boleta, porque lo que pido una revisada a la macro.

Para lo cual adjunto 2 link en caso de que no permita descargar

https://app.box.com/embed_widget_preview?shared_name=agl2j3mtu76tqa3brs8y23luw4iy5oox&direction=ASC&theme=dark&width=500&height=400 

https://app.box.com/s/agl2j3mtu76tqa3brs8y23luw4iy5oox

1 respuesta

Respuesta
1

En ninguno de los 2 archivos viene esta macro:

guardar_pdf

No se puede revisar.

Además los archivos no tienen datos para cargarse en el listbox.

Buenas noches amigo Dante Amor, efectivamente no adjunte la macro guardar_pdf

Dim NOMBRE As String
Sub guardar_pdf()
    CARPETA
    ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
Set rng = Range(ActiveSheet.UsedRange.Address)
rng.ExportAsFixedFormat Type:=xlTypePDF, _
   fileName:=NOMBRE, Quality:=xlQualityStandard, _
   IncludeDocProperties:=True, IgnorePrintAreas:=True, _
   From:=1, To:=10, OpenAfterPublish:=False
   Range("A1").Select
MsgBox "El archivo PDF fue generado en: " & NOMBRE & ".pdf"
End Sub
Sub CARPETA()
Set fso = CreateObject("Scripting.FileSystemObject")
    Dim archivos As String
    Dim contador As Integer
respuesta = MsgBox("Usar carpeta por default", vbYesNo, "AVISO")
If respuesta = vbYes Then
    directorio = ActiveWorkbook.Path
Else
titulo = "Selecciona la ruta de tu carpeta"
On Error Resume Next
With CreateObject("shell.application")
directorio = .browseforfolder(0, titulo, 0).Items.Item.Path
End With: On Error GoTo 0
If directorio = "" Then
MsgBox "No has marcado ningún directorio.", , "Operación no válida"
End
Else
MsgBox "Ha seleccionado la siguiente ruta " & directorio
End If
End If
RES = MsgBox("¿Guardar con nombre por default?", vbYesNo, "AVISO")
If RES = vbYes Then
    hoja = ActiveSheet.Name
Else
    hoja = InputBox("TECLEA UN NOMBRE:", "AVISO")
End If
NOMBRE = directorio & "\" & hoja
End Sub
'REVISAR ESTA RUTINA
Sub ajustar()
    Range("a63").Select
    n = Range("a63").Value
    Do While ActiveCell <> Empty
        Set x = ActiveCell.Resize(2, 2)
        x.EntireRow.Insert
        ActiveCell.Offset(64, 0).Select
    Loop
End Sub

Gracias nuevamente por el apoyo amigo, o salvo que tengas otro modelo de macro al que detallo.

La información es llamada de la hoja Boleta y la hoja Trabajador sirve como plantilla y como te indico sobre para el primer trabajador emite su boleta, pero para el segundo trabajador emite el error.

Puedes enviarme tu archivo con la macro y con datos para cargarse en el listbox, para realizar pruebas.

Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario "canon sata" y el título de esta pregunta.

Buenas tardes amigo Dante Amor, te acabo de remitir el archivo.

Gracias

H o l a :

Realmente no tienes problemas en la macro, lo que pasa es que estás copiando las celdas y estas celdas tienen fórmulas, al momento de que pegas las celdas en la hoja "trabajador", en la celda A1, las fórmulas toman las nuevas referencias y no encuentran nada, por eso te aparece la leyenda "#¡REF!", salvo el primer nombre, ya que las referencias siguen siendo las mismas.

Revisa la siguiente alternativa. Modifiqué la macro, para que ya no haga la copia; y que genere el Pdf directamente de la hoja "boleta", solamente va a exportar al Pdf el rango que corresponda a la selección.

Private Sub ListBox1_Click()
'Act.Por.Dante Amor
    LIMPIA
    Set x = Worksheets("BOLETA")
    Set y = Worksheets("TRABAJADOR")
    valor = ListBox1.Value
    numero = ListBox1.ListIndex + 1
    Set Z = x.Range("b:b")
    With Z
        Set busca = .Find(valor, LookIn:=xlValues)
    End With
    r = busca.Address
    ri = Range(r).Offset(-10, -1).Address
    rf = Range(ri & ":m" & numero * 62).Address
    PREGUNTA = MsgBox("¿GENERAR PDF? ", vbYesNo, "AVISO")
    If PREGUNTA = vbYes Then
        CARPETA2
        'ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
        'Set rng = Range(ActiveSheet.UsedRange.Address)
        x.Range(rf).ExportAsFixedFormat Type:=xlTypePDF, _
           fileName:=NOMBRE, Quality:=xlQualityStandard, _
           IncludeDocProperties:=True, IgnorePrintAreas:=True, _
           From:=1, To:=10, OpenAfterPublish:=False
        MsgBox "El archivo PDF fue generado en: " & NOMBRE & ".pdf"
    Else
        End
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas