![](/img/trans.png)
[英]How to navigate to an already opened internet explorer window? (VBA)
[英]Print already opened Internet explorer
我正在嘗試打印已打開但無法正常工作的 Internet Explorer 頁面。 下面的代碼:
Sub Already_Opened()
On Error Resume Next
Set objShell = CreateObject("Shell.application")
intWinCnt = objShell.Windows.Count
For intWinNo = 0 To (intWinCnt - 1)
StrWinTitle = objShell.Windows(intWinNo).Document.Title
If StrWinTitle = "Google" Then
Set IE = objShell.Windows(intWinNo).Document
Exit For
End If
Next
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
'Search box
IE.getElementsByClassName("gLFyf gsfi")(0).Value = "Earth"
'Search result Button
IE.getElementsByClassName("gNO89b")(0).Click
'Wait 5 Sec
Application.Wait Now + TimeValue("00:00:05")
'Print
IE.execWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End Sub
當我使用 Excel VBA 打開並導航到 Internet Explorer 然后打印它時,它可以工作。 下面的代碼有效:
Sub New_IE()
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
Dim IE As Object
Dim Doc As HTMLDocument
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate "https://www.google.co.uk/"
Do While IE.Busy
Application.Wait DateAdd("s", 1, Now)
Loop
Set Doc = IE.Document
'Search box
Doc.getElementsByClassName("gLFyf gsfi")(0).Value = "Earth"
'Search result Button
Doc.getElementsByClassName("gNO89b")(0).Click
'Print
Application.Wait Now + TimeValue("00:00:05")
IE.execWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End Sub
我嘗試檢查兩個示例代碼,並找到了問題的原因。
您說打印代碼適用於第二個代碼示例,但不適用於第一個代碼示例。
如果您檢查打印頁面的代碼行,您會注意到您使用的是IE 瀏覽器 object 。 (在第二個例子中)
如果您看到第一個代碼示例,那么您會注意到您正在將IE 文檔分配給IE object 。
Set IE = objShell.Windows(intWinNo).Document
您需要分配IE 瀏覽器 object而不是文檔 object來解決此問題。
下面是修改后的代碼,它工作正常。
Sub Already_Opened()
Dim IE As Object
On Error Resume Next
Set objShell = CreateObject("Shell.application")
intWinCnt = objShell.Windows.Count
For intWinNo = 0 To (intWinCnt - 1)
StrWinTitle = objShell.Windows(intWinNo).document.Title
If StrWinTitle = "Google" Then
Set IE = objShell.Windows(intWinNo)
Exit For
End If
Next
Const OLECMDID_PRINT = 6
Const OLECMDEXECOPT_DONTPROMPTUSER = 2
'Search box
IE.document.getElementsByClassName("gLFyf gsfi")(0).Value = "Earth"
'Search result Button
IE.document.getElementsByClassName("gNO89b")(0).Click
'Wait 5 Sec
Application.Wait Now + TimeValue("00:00:05")
'Print
IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
End Sub
您可以嘗試在您身邊運行此示例,並讓我們知道它是否適合您。 讓我們知道是否有任何不清楚的地方。 我會盡力為它提供建議。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.