将超链接存储在dynamic范围内?

所以我有一个大的PowerPoint演示文稿,我使用下面的代码来修改演示文稿中的所有超链接的一部分(删除部分文件path使用相对而不是绝对引用):

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 

我想对QA做的事情是在Excel工作表中并排显示原始的超链接和修改后的超链接,以比较原始链接和新链接,确保一切正常。

我的第一篇文章,我试过谷歌,但没有太多的喜悦,任何帮助非常感谢!

谢谢

詹姆士

像这样的东西可以工作,但您将需要添加Microsoft Excel引用

 Dim oSl As Slide Dim oHl As Hyperlink Dim sSearchFor As String Dim sReplaceWith As String Dim oSh As Shape Dim wk As Workbook Dim ws As Worksheet Dim i As Double Set wk = Workbooks.Add Set ws = wk.Worksheets(1) ws.Cells(1, 1).Value = "original" ws.Cells(1, 2).Value = "modified" i = 2 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 ws.Cells(i, 1).Value = oH1.Address 'original oHl.Address = Replace(oHl.Address, sSearchFor, sReplaceWith) 'modification ws.Cells(i, 2).Value = oH1.Address 'modified i = i + 1 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