excel - 在单个宏运行时未检测到嵌入文件
问题描述
脚本将嵌入文件转换为其图像并将它们粘贴到嵌入文件上然后删除嵌入文件的想法(代码如下)。这是在 vba PowerPoint 中完成的。当我在幻灯片中嵌入方程式和嵌入图像时出现问题。该脚本在首次运行时检测到幻灯片中 3 个嵌入方程中的 2 个和 3 个嵌入图像中的 1 个,并将它们转换为它们的图像。第二次运行脚本它会检测到剩下的一个方程,然后当我第三次运行脚本时它会检测到剩余的图像。因此在脚本运行 3 次时检测到 6 个嵌入项。知道问题出在哪里。
enter code here
Sub ConvertAllShapesToPic()
Dim oSl As Slide
Dim oSh As Shape
Dim k
k = 0
With ActivePresentation
z = .Slides(.Slides.Count).SlideNumber
MsgBox z, vbDefaultButton1, "Total Slides"
End With
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
Select Case oSh.Type
Case msoChart, msoEmbeddedOLEObject, msoLinkedOLEObject
ConvertShapeToPic oSh
k = 1
Case Else
End Select
Next
Next
If k = 1 Then
MsgBox "Embedded files replaced by their Images", vbDefaultButton1
Else
MsgBox "Embedded files already replaced by their Images", vbDefaultButton1
End If
End Sub
Sub ConvertShapeToPic(ByRef oSh As Shape)
Dim oNewSh As Shape
Dim oSl As Slide
Dim y
Set oSl = oSh.Parent
oSh.Copy
Set oNewSh = oSl.Shapes.PasteSpecial(ppPasteEnhancedMetafile)(1)
With oNewSh
.Left = oSh.Left
.Top = oSh.Top
Do
.ZOrder (msoSendBackward)
Loop Until .ZOrderPosition = .ZOrderPosition
End With
For y = oSl.TimeLine.MainSequence.Count To 1 Step -1
If oSh Is oSl.TimeLine.MainSequence.Item(y).Shape Then
oSl.TimeLine.MainSequence.Item(y).Shape = oNewSh
End If
Next y
oSh.Delete
End Sub
解决方案
替换这个:
For Each oSh In oSl.Shapes
Select Case oSh.Type
Case msoChart, msoEmbeddedOLEObject, msoLinkedOLEObject
ConvertShapeToPic oSh
k = 1
Case Else
End Select
Next
有了这个:
' Add Dim x as Long to the top of the routine
For x = oSl.Shapes.Count to 1 Step -1
Set oSh = oSl.Shapes(x)
Select Case oSh.Type
Case msoChart, msoEmbeddedOLEObject, msoLinkedOLEObject
ConvertShapeToPic oSh
k = 1
Case Else
End Select
下一个
推荐阅读
- sql - Oracle:触发器将值插入另一个表,其中包含一个额外的自动增量主键列
- typescript - 监视 setTimeout,但它不会按预期调用
- logging - 我们如何在 NSIS 中同时启用日志记录和字符串长度特殊构建?
- node.js - 需要检索 URL 参数以及通过应用程序传递一个对象,把
- flutter - Flutter - card_scanner - IOS 构建问题
- python - 熊猫百分比下降
- include - 无法打开输出文件 findlargestnumber.exe:权限被拒绝 collect2.exe:错误:ld 返回 1 退出状态
- python - 多线程使用 Python 计算文件夹内的文件数
- conv-neural-network - 如何使用卷积神经网络 (CNN) 生成字符嵌入?
- python - Groupby 并使用 Python 中的前向填充以 1 分钟的频率重新采样