![如何打开工作表上的超链接,并按文件夹保存图像](https://linux22.com/image/1544723/%E5%A6%82%E4%BD%95%E6%89%93%E5%BC%80%E5%B7%A5%E4%BD%9C%E8%A1%A8%E4%B8%8A%E7%9A%84%E8%B6%85%E9%93%BE%E6%8E%A5%EF%BC%8C%E5%B9%B6%E6%8C%89%E6%96%87%E4%BB%B6%E5%A4%B9%E4%BF%9D%E5%AD%98%E5%9B%BE%E5%83%8F.png)
如何打开工作表上的超链接并将每个图像保存在不同的文件夹中?
我正在使用 Excel。我有 7 张表,每张表有 1000 条记录。
每张表中有八列超链接(超链接的 URL 包含图像链接)。每条记录的超链接应在单独的窗口中打开。
现在我正在使用此脚本一次打开所有超链接。
Sub OpenHyperLinks()
'Update 20141124
Dim xHyperlink As Hyperlink
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each xHyperlink In WorkRng.Hyperlinks
xHyperlink.Follow
Next
End Sub
我可以一次打开所有超链接,但我确实想为每一行/记录打开单独的 chrome 窗口,以便我可以将每条记录的图像保存在单独的文件夹中。
参见下图。我想在一个窗口中打开记录 10,在另一个窗口中打开记录 11,依此类推。
答案1
试试这个代码。它在我的 Windows 7 64 位和 Chrome 版本 62.0.3202.75 上确实有效。
通常,Chrome 会在新选项卡中打开后续 URL,而不是在新窗口中打开。因此,如果您在 VBA 中使用方法,则可能无法控制此行为Hyperlink.Follow
。诀窍是在处理完每一行后使用 Shell 函数调用 Chrome 的新实例,以便后续 URL 在该新实例中打开,依此类推。
虽然这段代码确实在我这边起作用了,但它可能或可能不会完全按照预期工作,这取决于 Windows OS/Chrome 版本及其设计方式。所以请尝试一下并报告结果。
此外,使用 Shell 可能会稍微加快 URL 打开速度,最重要的是,即使它实际上没有被解析为 Excel 文档中的 URL,Chrome 仍会打开有效的文本 URL,以防万一。
Sub OpenHyperLinks()
On Error Resume Next
Dim xHyperlink As String
Dim WorkRng As Range
Dim cell As Range
Dim counter As Integer
Dim col_counter As Integer
Dim row_counter As Integer
Dim pHandle
Const Chrome_Path = "C:\Program Files (x86)\Google\Chrome\Application\Chrome.exe"
'Set above Constant Chrome_Path to match Chrome.exe location on your PC
counter = 0
row_counter = 0
Set WorkRng = Application.InputBox("Select Range", Type:=8)
If WorkRng.Rows.Count = 0 Then
Exit Sub
End If
col_counter = WorkRng.Columns.Count
For Each cell In WorkRng
If counter = 0 Then
pHandle = Shell(Chrome_Path)
End If
xHyperlink = cell.Value
If xHyperlink = "" Then
Else
pHandle = Shell(Chrome_Path & " -url " & xHyperlink)
End If
counter = counter + 1
If counter = col_counter Then
counter = 0
End If
Next
End Sub
代码中没有太多验证。万一您在 InputBox 处取消,子程序将退出,因为没有要处理的内容,如果 Hyperlink 为空,它将被跳过。设置 Chrome_Path 常量以匹配您 PC 上 Chrome.exe 的位置,以防它安装在您 PC 上的其他文件夹/分区。
如果您有数百个 URL 需要处理,最终可能会降低您的 PC 速度,因为多个 Chrome 实例将占用内存。或者,您可以在每条记录使用后暂停,MsgBox
并在使用完毕后手动关闭打开的 Chrome 实例。