VBA Código Imprimir en Objeto HostExplorer
Necesitaría un código para imprimir la pantalla de la ventana, es decir la información que esta dentro.
Mi macro es la siguiente:
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Dim he As Object Dim hst As Object Dim Frac As Integer Const n As Integer = 1000 Const TimeOut As Integer = 60 Dim NumEsperas As Integer Sub hostExpl() Set he = CreateObject("HostExplorer") Set hst = he.CURRENTHOST On Error Resume Next Err.Clear hst.PSReserved = False If Err.Number <> 0 Then MsgBox "Ingrese en Emulación 3270", vbCritical + vbDefaultButton1 + vbOKOnly End If End Sub Sub InformesAcuerdos() If hst Is Nothing Then hostExpl Frac = Frac + 1 End If Frac = 0 With Application If Range("D5") = "" Then MsgBox "Ingresar CUIT/CUIL en la celda D5", vbExclamation Exit Sub End If hst.PSReserved = False hst.puttext "3", 4, 29 ' Ingresa el numero "3" en la posición 4/29 de la ventana hst.RunCmd ("ENTER") ' Presiona "ENTER" dentro de la ventana iRC = hst.WaitPSUpdated(50, True) 'Espera actualizarse hst.puttext "2", 4, 29 ' Ingresa el numero "2" en la posición 4/29 de la ventana hst.RunCmd ("ENTER") ' Presiona "ENTER" dentro de la ventana iRC = hst.WaitPSUpdated(50, True) 'Espera actualizarse hst.puttext Sheets("Hoja1").Range("D5"), 3, 11 'Carga el CUIT que está escrito en la celda "D5" en la posición 3/11 de la ventana hst.RunCmd ("ENTER") ' Presiona "ENTER" dentro de la ventana iRC = hst.WaitPSUpdated(50, True) 'Espera actualizarse hst.RunCmd ("PF6") ' Presiona "F6" dentro de la ventana iRC = hst.WaitPSUpdated(50, True) 'Espera actualizarse End With End Sub
Si bien manualmente puedo apretar F6 y me imprime, necesitaría otra alternativa ya que en el sistema de la empresa no siempre imprime de forma correcta. Generalmente imprimimos apretando Ctrl+P y nos sale la ventana de impresión y le damos aceptar, de esa forma imprime correctamente.
Lo que yo necesitaría es reemplazar la linea hst. RunCmd ("F6") por otra alternativa.
Intenté con SendKey para presionar Ctrl+P pero no logro que funcione, y aun así, creo que solo me saldría la ventana de impresión y le tendría que dar manualmente al botón aceptar.