【发布时间】:2017-04-01 17:55:06
【问题描述】:
任务:我有一个 PowerPoint 文件,其中包含带有文本的幻灯片。文本包含代码字,我想用超链接替换。现在我正在使用下面的代码来实现这一点。
For Each sld In prt.Slides
For Each shp In sld.Shapes
If shp.HasTextFrame Then
If shp.TextFrame.HasText Then
Set rngToSearch = shp.TextFrame.TextRange
Set rngFound = rngToSearch.Find("SomeLink")
Do While Not (rngFound Is Nothing)
With rngFound
With .ActionSettings(ppMouseClick)
.Action = ppActionHyperlink
.Hyperlink.Address = "http://www.SomeLink.de"
.Hyperlink.TextToDisplay = "SomeLink"
End With
.Font.Bold = msoFalse
Set rngFound = rngToSearch.Find("SomeLink", .Start + .Length - 1)
End With
Loop
End If
End If
Next shp
Next sld
工作原理: 代码设法找到代码字 SomeLink 的所有出现,并将这个词的每一个出现都加粗(我只是为了测试目的而这样做) .这告诉我,变量 rngFound 工作正常(即设置为每个 TextFrame 文本的正确子部分。
什么不起作用:代码不会为形状中的每个代码字创建超链接,而是只获取找到代码字的每个形状的第一个单词并创建超链接。下面的图片显示了之前和之后,以使这一点更清楚。
之前:
之后:
问题:有人知道如何让这段代码按预期运行吗?我现在真的吓坏了。
【问题讨论】:
标签: vba powerpoint