将粘贴特殊链接保留在复制/粘贴并重命名的文件夹中

将粘贴特殊链接保留在复制/粘贴并重命名的文件夹中

我使用“选择性粘贴链接”选项将 Excel 图表链接到 Powerpoint 幻灯片,这样打开 Powerpoint 时可以轻松更新图表。Powerpoint 和 Excel 文件都包含在同一个文件夹中,但信息需要每月更新。我的公司希望为每个月创建一个新文件夹,这样就可以存档前几个月的信息。

我以为有一种方法可以复制/粘贴带有链接的文件夹并重命名,同时保留指向新重命名文件夹的链接,因为所有内容都在一起,并且没有指向文件夹外部的链接。但是,当我检查新文件夹中的 PowerPoint 时,链接仍然指向原始文件夹中的 Excel 文件。因此,链接从指向文件夹内的文件变为指向文件夹外的文件。

我知道我可以编辑链接以指向新文件夹,并且由于链接很少,因此在这种情况下只需要大约 10 分钟,但我想知道是否有办法自动保留链接。

今天早上我第一次尝试复制/粘贴/重命名时,我刚刚用从家里通过电子邮件发送给自己的新副本覆盖了原始文件夹中的少量文件。当时,当我查看新重命名文件夹中的 PowerPoint 时,那些特定文件已更新其路径以匹配新文件夹,但其他文件没有。我浏览并重新链接了旧文件夹中的所有图表(包括来自覆盖文件的图表),然后重复复制/粘贴/重命名。我检查了这个新文件夹中的 PP,所有链接都指向旧文件夹,没有一个指向新文件夹。不确定那些少数人更新链接是否是侥幸。

我曾尝试在其他地方寻找答案,但似乎找不到任何能给出好的“不,这是不可能的”或“这是你如何做到的”答案的东西。

有什么想法?建议?解决方案?还是每次创建新文件夹时我都必须手动更新链接?

答案1

另一种方法:

每次更新时,无需复制/粘贴到新文件夹,而是每次将更新的文件复制到同一个文件夹中:

一月:将您的 Excel 文件和 PPT 文件放入 \CurrentMonth 文件夹。根据需要创建链接。

二月:将 Excel 文件从 \CurrentMonth 复制到 \January,然后将新的 Excel 文件复制到 \CurrentMonth,覆盖旧的 Excel 文件。

每个月都是如此。将目录名称更改为合适的名称。

答案2

没有办法使用复制和粘贴。但作为一种解决方法,你可以使用

最简单的解决方案:在超链接中使用相对路径

如果您的文件位于同一文件夹中,例如:

Monthly Report Calculation.xlsx
Monthly Report.pptx

然后,如果使用相对路径,您就可以在 PPTX 和 XLSX 之间双向链接。

在 PowerPoint 中,请确保您创建的是Monthly Report Calculation.xlsx(基本上是.\Monthly Report Calculation.xlsx相对于 PPTX 文件当前目录的路径)的链接,而不是D:\Data\Monthly Report Calculation.xlsx(绝对路径)。

在 Excel 中,您可以在里面使用以下公式Monthly Report Calculation.xlsx

=HYPERLINK("Monthly Report.pptx")

或者也可以使用友好的显示名称:

=HYPERLINK("Monthly Report.pptx", "Monthly Report")

现在你可以将文件复制到任何你想要的地方,链接从 PowerPoint 到 Excel 并返回可以在这些文件保存在一起的任何目录中工作。

请注意,我在 Excel 公式中显示的路径是作为相对路径输入的,因此如果需要,您可以跨目录遍历:

=HYPERLINK("..\Presentations\Monthly Report.pptx", "Monthly Report")

相同的目录引用在 PowerPoint 中的超链接框中起作用。已测试。


另一种可能性是创建自定义 VBA 代码来更新超链接并每月启动它。如果你查看其中一个答案,你应该明白这个想法。

不管是哪种方法,都不要指望开箱即用的特定功能。您需要调整您这边的流程(以不同的方式执行)或创建代码来执行特定于您的环境和流程的任务。

答案3

此网页为 PowerPoint 提供搜索和替换宏。我还没有测试过,但该页面的解决方案如下:

解决方案

此宏会询问您要搜索什么文本以及要用什么来替换它。然后它会查看演示文稿中的每个超链接,并对超链接地址和子地址进行搜索/替换。

代码如下:

Option Explicit

Sub HyperLinkSearchReplace()

    Dim oSl As Slide
    Dim oHl As Hyperlink
    Dim sSearchFor As String
    Dim sReplaceWith As String
    Dim oSh As Shape

    sSearchFor = InputBox("What text should I search for?", "Search for ...")
    If sSearchFor = "" Then
        Exit Sub
    End If

    sReplaceWith = InputBox("What text should I replace" & vbCrLf _
        & sSearchFor & vbCrLf _
        & "with?", "Replace with ...")
    If sReplaceWith = "" Then
        Exit Sub
    End If

    On Error Resume Next

    For Each oSl In ActivePresentation.Slides

        For Each oHl In oSl.Hyperlinks
            oHl.Address = Replace(oHl.Address, sSearchFor, sReplaceWith)
            oHl.SubAddress = Replace(oHl.SubAddress, sSearchFor, sReplaceWith)
        Next    ' hyperlink

        For Each oSh In oSl.Shapes
            If oSh.Type = msoLinkedOLEObject _
            Or oSh.Type = msoMedia Then
                oSh.LinkFormat.SourceFullName = _
                    Replace(oSh.LinkFormat.SourceFullName, _
                    sSearchFor, sReplaceWith)
            End If
       Next

    Next    ' slide

End Sub

限制

  • 该宏只能在 PowerPoint 2000 或更高版本中使用。它无法在 PowerPoint 97 中运行(因为 97 不支持 Replace 命令)。
  • 此宏仅适用于超链接和 OLE 链接,不适用于操作设置。但有些操作设置(大多数为“链接到”操作设置)也是超链接,因此指向其他文件的链接(无论是超链接还是操作设置)通常都可以使用此宏。

如何在 PowerPoint 中使用 VBA 代码?了解如何使用此示例代码。

相关内容