¿Problema con una macro que realizaste de pasar documentos de excel a pdf?

Abraham Valencia.

El código que hiciste es muy, pero que muy útil.

Lo que pasa es que en el PDF tengo "casillas de verificación". ¿Qué debo poner en las celdas del Excel para que la macro marque estas casillas en el PDF?

Respuesta
1

[Hola 

Las "casillas de verificación" de los pdf se marcan dándole valor de "Sí" o "No" (si tu Acrobat es en castellano) o de "Yes" o "No" (si tu Acrobat es en inglés). Ah, por supuesto hay que saber el nombre de las casillas Si fuesen parte del ejemplo y quisiera marcar tres, así sería:

objJSO.GetField("CheckBox1").Value = "Sí"
objJSO.GetField("CheckBox2").Value = "Sí"
objJSO.GetField("CheckBox3").Value = "Sí"

Obvio suponiendo esos nombres.

Para que se marquen dependiendo del valor de celdas, habría que usar un "If" tipo:

If Range("A1") = "Marcar" Then
objJSO.GetField("CheckBox1").Value = "Sí"
Else
objJSO.GetField("CheckBox1").Value = "No"
End If

O algo así.

Saludos]

Abraham Valencia

Hola Abraham, he probado así pero veo que el cursor pasa por encima de los checkbox y no marca nada.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set h2 = Sheets("Datos") 'contador
    '
    celdas = Array("A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2", "I2", "J2", "K2")
    '
    ruta = Application.GetOpenFilename("archivo (*.pdf), *.pdf", Title:=Tmp)
    If ruta = False Then Exit Sub
    ActiveWorkbook.FollowHyperlink ruta
    '
    Application.Wait Now + TimeValue("00:00:03")
    For i = LBound(celdas) To UBound(celdas)
        SendKeys "{TAB}"
        If Range("D1") = "Si" Then objJSO.GetField("CheckBox1").Value = "Yes"
        SendKeys h2.Range(celdas(i)).Value, True
        Application.Wait (Now + TimeValue("0:00:01"))
    Next
    '
    Application.ScreenUpdating = True
    MsgBox "Se enviaron los datos al pdf"
End Sub

Tanto si pongo ".Value = Yes" como si pongo "Si", no lo marca.

Moisés.

[Hola nuevamente

La verdad pensé que querías la solución con el objeto Acrobat, pero veo que prefieres usar "SendKeys". De ser así, deja de lado lo de "objJSO.GetField...".

Para los campos con checkbox, debes colocarte en ellos con "Tab" y para activar usar Enter:

SendKeys "{TAB}"
SendKeys "~"

Obviamente la cantidad de Tabs dependerá de la posición del Checkbox, algo que solo tú puedes saber/ver viendo el archivo.

Abraham Valencia

¡Gracias! 

Hola de nuevo.

Funciona, lo he dejado así.

Private Sub CommandButton1_Click()
'Por.Dante Amor
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Set h2 = Sheets("Datos") 'contador
    '
    celdas = Array("A2", "B2", "C2", "D2", "E2", "F2", "G2", "H2", "I2", "J2", "K2")
    '
 ruta = Application.GetOpenFilename("archivo (*.pdf), *.pdf", Title:=Tmp)
    If ruta = False Then Exit Sub
    ActiveWorkbook.FollowHyperlink ruta
    '
    Application.Wait Now + TimeValue("00:00:05")
    For i = LBound(celdas) To UBound(celdas)
        SendKeys "{TAB}"
        If h2.Range(celdas(i)).Value = "SI" Then
        SendKeys "~", True
        Else
        SendKeys h2.Range(celdas(i)).Value, True
      End If
        Application.Wait (Now + TimeValue("0:00:01"))
    Next
    '
    Application.ScreenUpdating = True
    MsgBox "Se enviaron los datos al pdf"
End Sub

Muchas gracias.

Moisés.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas