VBA截取网页截图,将其保存为文件并将其附加到新电子邮件中

时间:2017-02-17 07:25:25

标签: excel vba excel-vba outlook outlook-vba

我是VBA世界的新手。但是我找到了一些有希望的东西:

How to take a screenshot of webpage using vba

它提供了如何在打开IE后截取屏幕截图的想法。

但它没有说明如何将其保存在本地计算机上并将其附加到新电子邮件中。

我该怎么做?

编辑 - 现在,我正在使用selenium并运行shell脚本从VBA执行selenium脚本来存储它。但这会更好

2 个答案:

答案 0 :(得分:1)

这是一个Excel宏,用于将剪贴板的图像保存到XPS文件中:

Sub xlSaveClipboardImageToXPS()
    Application.DisplayAlerts = False: Application.ScreenUpdating = False: Application.EnableEvents = False
    On Error GoTo Cleanup

    With Sheets.Add
        .Paste
        With .PageSetup
            .Orientation = xlLandscape: .Zoom = False
            .FitToPagesWide = 1: .FitToPagesTall = 1
        End With
        .ExportAsFixedFormat xlTypeXPS, "C:\myScreen.xps"
        .Delete
    End With

Cleanup:
    Application.DisplayAlerts = True: Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub

从展望来看,您可以通过这种方式使用Excel的服务来实现它:

Sub olSaveClipboardImageToXPSUsingExcel()
    With CreateObject("Excel.Application")
        .DisplayAlerts = False
        With .Workbooks.Add.Worksheets(1)
            .Paste
            With .PageSetup
                .Orientation = 2: .Zoom = False
                .FitToPagesWide = 1: .FitToPagesTall = 1
            End With
           .ExportAsFixedFormat 1, "C:\SO\myScreen.xps"
        End With
        .Quit
    End With
End Sub

现在你有了一个文件,剩下的就是Outlook民间传说;您创建一个邮件项目并将该文件放在附件...

另请注意,如果您愿意,可以使用PDF格式,只需使用ExportAsFixedFormat 0(Excel中为xlTypePDF = 0)。

答案 1 :(得分:1)

Outlook的基本代码:

<%= f.collection_select(:category_id, Category.all, :id, :name, {:include_blank => '---select waste category---'}, {id: 'category_select', onchange: "$('#name_text_field').val(this.options[this.selectedIndex].innerHTML);"}) %>

以屏幕截图(全屏显示)并将其保存为文件的功能:

Sub test_Prateek_Narendra()
    Dim FilePath As String
    Dim objMsg As Object
    FilePath = StoreScreenShotFrom_As("www.google.com", "TestScrenShot", "jpg")

    Set objMsg = Application.CreateItem(0) 'olMailItem = 0
    With objMsg
        .To = "email@email.com"
        .Subject = "Test Subject"
        .Attachments.Add FilePath
        .Display
    End With 'objMsg
End Sub