使用VBA将Wesite打印为PDF
问题描述:
我正在尝试使用VBA将HTML保存为PDF.
I am trying to save HTML as PDF using VBA.
我不知道如何检查默认打印机是什么,将其更改为Microsoft Print to PDF,然后再返回到旧打印机.
I don't know how to check what is the default printer change it to Microsoft Print to PDF and then back to the old printer.
下面是我的代码:我在Google上搜索内容,然后在第一个Google搜索页面上输入链接,然后将搜索结果打印为PDF.
Below is my code: I search something on Google, then enter the links on the first Google Search page and then I would like to print searches to PDF.
Sub Main()
Dim search As String
Dim save_path As String
Dim number As Integer
number = 5
save_path = ""
Dim query As String
query = InputBox("Enter here your search", "Google Search")
search = query
search = Replace(search, " ", "+")
PDFFolderSelection save_path, search
Debug.Print save_path, search
Google_Search search, save_path, number
End Sub
Sub Google_Search(search As String, save_path As String, number As Integer)
Dim IE As InternetExplorerMedium
Set IE = CreateObject("InternetExplorer.Application")
Dim HTMLDoc As MSHTML.HTMLDocument
IE.Navigate "http://google.com/#q=" & search
IE.Visible = True
Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop
Set HTMLDoc = IE.Document
Dim RCS As MSHTML.IHTMLElementCollection
Dim RC As MSHTML.IHTMLElement
Set RCS = HTMLDoc.getElementsByClassName("rc")
Dim Atags As MSHTML.IHTMLElementCollection
Dim Atag As MSHTML.IHTMLElement
Dim URLs As New Collection
Dim URL As MSHTML.IHTMLElement
Set URLs = Nothing
For Each RC In RCS
Dim RS As MSHTML.IHTMLElementCollection
Dim R As MSHTML.IHTMLElement
Set RS = RC.getElementsByClassName("r")
For Each R In RS
Set Atags = R.getElementsByTagName("a")
For Each Atag In Atags
URLs.Add Atag
Next Atag
Next R
Next RC
For Each URL In URLs
Dim IEs As InternetExplorerMedium
Set IEs = CreateObject("InternetExplorer.Application")
str_text = Replace(URL.getAttribute("href"), "", "")
str_text = Replace(str_text, "", "")
'Debug.Print str_text
IEs.Navigate str_text
IEs.Visible = True
Do While IEs.ReadyState <> READYSTATE_COMPLETE Or IEs.Busy
Loop
IEs.Quit
Set IEs = Nothing
Next URL
IE.Quit
Set IE = Nothing
End Sub
答
我的代码看起来像这样,现在我想将网站打印为PDF
My code looks like this and now i would like to print website to PDF
Dim sPrinter As String
Dim sDefaultPrinter As String
Debug.Print "Default printer: ", Application.ActivePrinter
sDefaultPrinter = Application.ActivePrinter ' store default printer
sPrinter = GetPrinterFullName("Microsoft Print to PDF")
If sPrinter = vbNullString Then ' no match
Debug.Print "No match"
Else
Application.ActivePrinter = sPrinter
Debug.Print "Temp printer: ", Application.ActivePrinter
' do something with the temp printer
' Przechodzenie przez strony wraz z zapisem
For Each URL In URLs
Dim IEs As InternetExplorerMedium
Set IEs = CreateObject("InternetExplorer.Application")
str_text = Replace(URL.getAttribute("href"), "", "")
str_text = Replace(str_text, "", "")
IEs.Navigate str_text
IEs.Visible = True
Do While IEs.ReadyState <> READYSTATE_COMPLETE Or IEs.Busy
Loop
'HERE I WOLULD LIKE TO PRINT IEs TO PDF (specific path, and filename:)
IEs.Quit
Set IEs = Nothing
i = i + 1
If i = 5 Then Exit For
Next URL
Application.ActivePrinter = sDefaultPrinter ' restore default printer
End If
Debug.Print "Default printer: ", Application.ActivePrinter