如何打开工作表上的超链接,并按文件夹保存图像

如何打开工作表上的超链接,并按文件夹保存图像

如何打开工作表上的超链接并将每个图像保存在不同的文件夹中?

我正在使用 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 实例。

相关内容