Я пытаюсь проверить оба образца кода и обнаружил причину проблемы.
Вы сказали, что код печати работает для 2-го примера кода, но не для 1-го примера кода.
Если вы проверите строку кода, которая печатает страницу, то вы можете заметить, что используете объект браузера IE . (во 2-м примере)
Если вы видите 1-й пример кода, вы можете заметить, что вы назначаете IE документ объекту IE .
Set IE = objShell.Windows(intWinNo).Document
Чтобы устранить проблему, вам необходимо назначить IE объект браузера вместо объект документа .
Ниже модифицированный код, который работает нормально.
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
Вы можете попробовать запустить этот образец на своей стороне и сообщить нам, работает он для вас или нет. Сообщите нам, если что-то неясно. Постараюсь дать предложения по нему.