在 vba 中使用正则表达式更改 Powerpoint 中的视频名称
Change video name in Powerpoint using regex in vba
我正在尝试搜索我的演示文稿中的所有视频并更改每个视频的扩展名;从 XXXX.mp4 更改为 XXXX.wmv,反之亦然,但每当我进入正则表达式部分时,我都会在 "pptShape.LinkFormat.SourceFullName"
上收到错误消息
Sub Test()
Dim pptSlide As Slide
Dim pptShape As Shape
Dim Regx As Object
Dim regX_matches As Object
Set Regx = CreateObject("vbscript.regexp")
With Regx
.Global = True
.Pattern = ".*"
End With
For Each pptSlide In ActivePresentation.Slides
For Each pptShape In pptSlide.Shapes
If pptShape.Type = msoMedia Then
If pptShape.MediaType = ppMediaTypeMovie Then
Set regX_matches = Regx.Execute(pptShape.LinkFormat.SourceFullName)
Debug.Print "TEST '" + regX_matches + "'"
If regX_matches <> "" Then
pptShape.LinkFormat.SourceFullName = regX_matches(0) + ".mp4"
End If
End If
End If
Next pptShape
Next pptSlide
End Sub
有什么建议吗?
提前致谢
Edit1:我的视频是嵌入的,所以正如 JamieG 所说 pptShape.LinkFormat.SourceFullName 不起作用...知道如何修改嵌入的视频吗?
错误是什么?我设法通过尝试 return 嵌入(未链接)视频的 SourceFullName 属性 来生成以下错误所以你的视频是链接还是嵌入?
LinkFormat (unknown member) : Invalid request. This operation requires a linked object.
您可以使用以下 属性 形状为此添加测试:
pptShape.MediaFormat.IsLinked
所以:
子测试()
Dim pptSlide As Slide
Dim pptShape As Shape
Dim Regx As Object
Dim regX_matches As Object
Set Regx = CreateObject("vbscript.regexp")
With Regx
.Global = True
.Pattern = ".*"
End With
For Each pptSlide In ActivePresentation.Slides
For Each pptShape In pptSlide.Shapes
If pptShape.Type = msoMedia Then
If pptShape.MediaType = ppMediaTypeMovie And pptShape.MediaFormat.IsLinked Then
Set regX_matches = Regx.Execute(pptShape.LinkFormat.SourceFullName)
Debug.Print "TEST '" + regX_matches + "'"
If regX_matches <> "" Then
pptShape.LinkFormat.SourceFullName = regX_matches(0) + ".mp4"
End If
End If
End If
Next pptShape
Next pptSlide
结束子
我正在尝试搜索我的演示文稿中的所有视频并更改每个视频的扩展名;从 XXXX.mp4 更改为 XXXX.wmv,反之亦然,但每当我进入正则表达式部分时,我都会在 "pptShape.LinkFormat.SourceFullName"
上收到错误消息Sub Test()
Dim pptSlide As Slide
Dim pptShape As Shape
Dim Regx As Object
Dim regX_matches As Object
Set Regx = CreateObject("vbscript.regexp")
With Regx
.Global = True
.Pattern = ".*"
End With
For Each pptSlide In ActivePresentation.Slides
For Each pptShape In pptSlide.Shapes
If pptShape.Type = msoMedia Then
If pptShape.MediaType = ppMediaTypeMovie Then
Set regX_matches = Regx.Execute(pptShape.LinkFormat.SourceFullName)
Debug.Print "TEST '" + regX_matches + "'"
If regX_matches <> "" Then
pptShape.LinkFormat.SourceFullName = regX_matches(0) + ".mp4"
End If
End If
End If
Next pptShape
Next pptSlide
End Sub
有什么建议吗?
提前致谢
Edit1:我的视频是嵌入的,所以正如 JamieG 所说 pptShape.LinkFormat.SourceFullName 不起作用...知道如何修改嵌入的视频吗?
错误是什么?我设法通过尝试 return 嵌入(未链接)视频的 SourceFullName 属性 来生成以下错误所以你的视频是链接还是嵌入?
LinkFormat (unknown member) : Invalid request. This operation requires a linked object.
您可以使用以下 属性 形状为此添加测试:
pptShape.MediaFormat.IsLinked
所以:
子测试()
Dim pptSlide As Slide
Dim pptShape As Shape
Dim Regx As Object
Dim regX_matches As Object
Set Regx = CreateObject("vbscript.regexp")
With Regx
.Global = True
.Pattern = ".*"
End With
For Each pptSlide In ActivePresentation.Slides
For Each pptShape In pptSlide.Shapes
If pptShape.Type = msoMedia Then
If pptShape.MediaType = ppMediaTypeMovie And pptShape.MediaFormat.IsLinked Then
Set regX_matches = Regx.Execute(pptShape.LinkFormat.SourceFullName)
Debug.Print "TEST '" + regX_matches + "'"
If regX_matches <> "" Then
pptShape.LinkFormat.SourceFullName = regX_matches(0) + ".mp4"
End If
End If
End If
Next pptShape
Next pptSlide
结束子