我有一个范围A1:A60的URL列表。我想打开每个,截取网站截图,关闭网站并以jpg格式保存截图。
我正在使用我的辅助显示器截取屏幕截图,因为我已将其上的设置更改为纵向(非横向)以捕获冗长的文章。
我试图使用下面的代码,但它返回一个空白的jpg图像。
Option Explicit
'Declare Windows API Functions
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
'Declare Virtual Key Codes
Private Const VK_SNAPSHOT = &H2C
Sub PrintScreen()
Dim Address As String
Address = Range("A1").Value
ActiveWorkbook.FollowHyperlink Address, , True
AppActivate "Google Chrome"
keybd_event VK_SNAPSHOT, 1, 0, 0
ActiveSheet.Paste
Charts.Add
Charts(1).AutoScaling = True
Charts(1).Paste
Charts(1).Export Filename:="C:\Users\user\Desktop\0coding\Excel (Visual Basic)\ClipBoardToPic.jpg", FilterName:="jpg"
Charts(1).Delete
End Sub
所以,installing selenium,确保selenium文件夹中最新的chromedriver.exe和vbe> tools> references>添加对selenium类型库的引用。以下循环来自工作表,屏幕截图并保存到指定位置。 vba实现中没有正式的方向设置,但您可以调整大小设置并在窗口之间切换。
Option Explicit
Public Sub Screenshots()
Dim d As WebDriver, urls(), i As Long
urls = Application.Transpose(ThisWorkbook.Worksheets("Sheet1").Range("A1:A2").Value) '<change this
Set d = New ChromeDriver
With d
.AddArgument "--headless"
.Start "Chrome"
.Window.Maximize
For i = LBound(urls) To UBound(urls)
If InStr(urls(i), "http") > 0 Then
.get urls(i)
.TakeScreenshot.SaveAs ThisWorkbook.Path & "/screenshot" & str(i) & ".jpg"
End If
Next
.Quit
End With
End Sub