我是VBA世界的新手。但是我找到了一些有希望的东西:
How to take a screenshot of webpage using vba
它提供了如何在打开IE后截取屏幕截图的想法。
但它没有说明如何将其保存在本地计算机上并将其附加到新电子邮件中。
我该怎么做?
编辑 - 现在,我正在使用selenium并运行shell脚本从VBA执行selenium脚本来存储它。但这会更好
答案 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