在Powerpoint中,有链接到文件夹的图像。我需要将其发送给没有该文件夹访问权限的用户。我需要图像来保留当前内容。
我尝试手动复制并重新粘贴为图像(如图片),然后发送PowerPoint,此方法有效,并且保留了图像中的内容和日期设置。
当我有32个PowerPoint时,如何以编程方式执行此操作?
答案 0 :(得分:2)
这是一个有趣的挑战!
CopyPictures
宏实际上是您唯一需要的宏,但是我包括了我用来设置和调试整个情况的其他两个宏。
Option Explicit
Sub CopyPictures()
Dim currentSlide As Slide
For Each currentSlide In ActivePresentation.Slides
Dim currentShape As Shape
For Each currentShape In currentSlide.Shapes
If currentShape.Type = msoLinkedPicture Then
'https://docs.microsoft.com/en-us/office/vba/api/powerpoint.shapes.addpicture
currentSlide.Shapes.AddPicture _
currentShape.LinkFormat.SourceFullName, _
msoFalse, msoTrue, _
currentShape.Left, currentShape.Top, _
currentShape.Width, currentShape.Height
currentShape.Delete
End If
Next currentShape
Next currentSlide
End Sub
CopyPictures
宏遍历Powerpoint每张幻灯片中的每个形状,并说如果正在检查的当前形状的类型为msoLinkedPicture
,它将使用链接的依据,但选择将图片与文档一起保存为msoPicture
。新图片放置在同一位置,并缩放以匹配当前图片。最后,由于图片的“旧”链接版本已被替换,因此它将删除。
使用AddLinkedPicture
宏将链接的图片添加到活动幻灯片中,然后使用第二个宏ShapeTypeDebug
来确保添加的图片具有正确的类型{{ 1}}。
您可以使用msoLinkedPicture
宏来检查当前幻灯片上的任何形状是否为图片。我在运行ShapeTypeDebug
宏之前和之后使用此命令,以确保图片已正确地“转换”。
CopyPictures
请注意,我使用的方法不会复制当前图片,因此,如果您在Powerpoint中对其进行了其他编辑,则我的方法将丢失该编辑。
答案 1 :(得分:1)
对于分发演示文稿,我认为您可能已经拥有最好的解决方案,但这是在某些情况下有用的另一种解决方案。
PowerPoint几乎总是会创建全路径链接,但是如果链接仅指向文件名而不是路径,它将(通常)与PPT / PPTX本身在同一文件夹中查找图像。
因此,如果您愿意分发链接的图像以及PowerPoint文件,并且可以使收件人将它们全部放到一个文件夹中,那么您要做的就是将链接的图片的.LinkFormat.SourceFullName设置为just原始图像文件名,无路径。
很显然,这并不是那么容易分发,但是由于它只改变链接的图片而不改变链接路径,因此它保留了可能应用于图像的任何动画,替代文本,标签或其他不寻常的格式设置。
另一个(也许是最简单的)技巧是在插入图像时选择“链接和嵌入”,而不仅仅是“链接”。然后,当磁盘上的原始图像更改时,PPT将更新演示文稿中的图像,但是如果链接断开,则使用嵌入的副本。