Necesito activar ctrl+p para guardar una página web como PDF

Tengo una código en visual basic, con este ingreso a una página de búsqueda pero necesito guardar la página completa como PDF, y hacer esto con todos los datos de la columna A.

Este es mi código

Option Explicit

Sub ExtraerDatos()

Dim IE As Object
Dim c As Long, UltimaFila As Long
Dim Celda As Range

Application.ScreenUpdating = False

Set IE = CreateObject("InternetExplorer.Application")
Let UltimaFila = Cells(Rows.Count, 1).End(xlUp).Row

IE.navigate "http://192.168.1.76/frmPrincipal.aspx"
IE.Visible = True
For Each Celda In Range("A2:A" & UltimaFila)

Application.Wait (Now + TimeValue("0:00:05"))

With IE
.Document.getElementById("txtDato").Value = Celda.Value
.Document.getElementById("btnCon").Click

Aqui necesito que guarde la pagina web
Do Until IE.readyState = 4
DoEvents
Loop
Application.Wait (Now + TimeValue("0:00:05"))
End With
Next Celda

IE.Quit
Set IE = Nothing

Application.ScreenUpdating = True

MsgBox "Proceso finalizado"

End Sub

1 Respuesta

Respuesta
1

[Hola

En realidad no hay una forma directa de convertir una web en pdf desde VBA.

Lo primero es:

- Puedes hacer uso de las funciones API de Windows y cambiar la impresora predeterminada, de ese modo estableces una del tipo pdf (que asumo debes de tener).

- O, cambias diretcamente la predeterminada de tus sistema operativo y estableces ahí la del tipo "pdf"

Una vez decidido lo que harás respecto a esa primera parte, lo segundo es ya imprimir lo necesario, para eso debes usar el método (poco conocido por los usuarios del VBA) "ExecWB" ¿cómo? Del siguiente modo.

Primero declara las siguientes constantes:

Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Const PRINT_WAITFORCOMPLETION = 2

Luego en donde deseas que imprima agrega esta línea:

IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER

Comentas

Abraham Valencia

Hola Abraham, gracias por tu ayuda me funciono tal como deseo, ya había escogido la primera opción de guardado, pero adicional necesito que el nombre del archivo que voy a guardar sea el mismo del valor de la celda usada, no se si me hice entender.

Saludos

[Hola

Hay dos opciones:

1- Que en lugar de "imprimirse" directamente, salga el cuadro de diálogo respectivo e ingreses el nombre directamente cada vez

2- Que en lugar de "imprimirse" directamente, salga el cuadro de diálogo respectivo y a través de "SendKeys" envíes el valor de la celda esperada, y luego con esa misma instrucción envíes la pulsación al botón "Imprimir". ¿Desventaja? Sendkeys es algo "Inestable" en ocasiones.

Abraham Valenica

Hola, he probado las opciones dadas consigo llegar hasta aquí, no consigo que en el recuadro se coloque el valor de la celda usada para la búsqueda inicial ni tampoco darle clic en guardar.

¿Estás intentando con "SendKeys"? de ser así ¿Cómo?

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas