웹 페이지를 탐색 한 후 PDF를 인쇄하려고합니다.IE.ExecWB 6,2는 인쇄 대화 상자를 표시합니다. 이 페이지를 인쇄하려면 어떻게합니까?
내가 인쇄 대화 상자에서 인쇄 버튼을 클릭 어떻게Sub login()
Dim IE As Object
Dim HTMLDoc As Object, HTMLDoc2 As Object
Dim objCollection As Object
Dim currentURL As String
Const navOpenInNewTab = &H800
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "url"
Do While IE.Busy Or IE.ReadyState <> 4: Loop
Set HTMLDoc = IE.document
'Application.Wait (Now + TimeValue("00:0:10"))
With HTMLDoc
HTMLDoc.getElementById("userName").Value = "ABC" 'Entering credential
HTMLDoc.getElementById("password").Value = "xyz"
End With
Application.Wait (Now + TimeValue("00:0:3"))
Set objCollection = IE.document.getElementById("submitButton")
objCollection.Click
Do While IE.Busy Or IE.ReadyState <> 4: Loop ' opening the second webpage
Set HTMLDoc2 = IE.document
With HTMLDoc2
IE.Navigate "URL"
End With
Application.Wait (Now + TimeValue("00:0:10"))
Do While IE.Busy Or IE.ReadyState <> 4: Loop
Set objCollection = IE.document.getElementById("menu_print")
objCollection.Click
Do While IE.Busy Or IE.ReadyState <> 4: Loop
Application.Wait (Now + TimeValue("00:0:03"))
With CreateObject("Shell.Application").Windows
If .Count > 0 Then
' Get IE
Set IE = .Item(1) ' or .Item(.Count - 1) 'second tab
IE.Navigate "URL" 'third webpage
IE.ExecWB 6, 2
'Application.CommandBars.ExecuteMso ("PrintPreviewAndPrint")
End If
End With
End Sub
또는 어떻게해야합니까 클릭하거나 대화 상자를 처리하지 않고 세 번째 웹 페이지에서 PDF를 인쇄 : 다음은 코드입니다. 웹 페이지에서 PDF를 인쇄하는 직접 명령이 있습니까?
인쇄 대화 상자를 코드 찾기 위해 bleow에 코드를 추가 :
timeout = Now + TimeValue("00:00:04")
Do
hWnd = FindWindow(vbNullString, "Print") 'Finding the save as window
DoEvents
Sleep 200
Loop Until hWnd Or Now > timeout
If hWnd Then
SetForegroundWindow hWnd
'Find the child DUIViewWndClassName window
'hWnd = FindWindowEx(hWnd, 0, "DUIViewWndClassName", vbNullString)
hWnd = FindWindowEx(hWnd, 0, "Button", "&Print") 'Finding the Print button on the window
Sleep 600
SendMessage hWnd, BM_CLICK, 0, 0
End If
코드는 ableto 인쇄 대화 상자를 찾아 전경으로 설정됩니다. 그러나 인쇄 단추를 찾을 수 없습니다. FindWindowEx의 경우 hWnd를 0으로 반환합니다.
내 헤더 파일 :
Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)
Public Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare PtrSafe Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, _
ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr
Public Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, _
ByVal wParam As LongPtr, lParam As Any) As LongPtr
Public Declare PtrSafe Function SetForegroundWindow Lib "user32" _
(ByVal hWnd As Long) As LongPtr
Public Declare PtrSafe Function SendMessageByString Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As LongPtr
Public Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPtr
Public Declare PtrSafe Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Public Const BM_CLICK = &HF5
Public Const WM_SETTEXT = &HC
Public Const WM_GETTEXT = &HD
Public Const WM_GETTEXTLENGTH = &HE
Public Const VK_KEYDOWN = &H0
Public Const VK_KEYUP = &H2
Public Const VK_CONTROL = &H11
불행히도 인쇄 대화 상자 – Shank