使用VBA将Wesite打印为PDF [英] Print Wesite to PDF using VBA

查看:204
本文介绍了使用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

这篇关于使用VBA将Wesite打印为PDF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆