【发布时间】:2015-10-26 18:09:26
【问题描述】:
我经常制作窗口的屏幕截图并将它们保存到文件夹中,然后将它们添加到以某种方式裁剪、调整大小和对齐的 PowerPoint 演示文稿中。为了节省鼠标点击并使该过程可重现,我想在 PowerPoint 中使用 Visual Basic 宏自动执行此操作。
目前我有以下:
Sub Insert_Picture_3()
Dim oPic As Shape
Set oPic = ActiveWindow.View.Slide.Shapes.AddPicture("\\nlamvfs00065\homes\nlkpec\newpic.png", False, True, 0, 0, -1, -1)
oPic.PictureFormat.CropLeft = 115
oPic.PictureFormat.CropTop = 85
oPic.PictureFormat.CropRight = 16
oPic.PictureFormat.CropBottom = 55
oPic.Height = 7.5 * 72
oPic.Left = 0 * 72
oPic.Top = 0 * 72
oPic.ZOrder msoSendToBack
End Sub
“AddPicture”的参数是一个名为“newpic.png”的固定文件。但是,我希望这是目录“\nlamvfs00065\homes\nlkpec”中最新的 png 文件,这样我就不必每次应用宏时都将屏幕截图重命名为“newpic.png” .
我找到了一个类似于以下内容的示例:
Dim myFile = DirectoryInfo.GetFiles("\\nlamvfs00065\homes\nlkpec").OrderByDescending(Function(f) f.LastWriteTime).First()
但是,如果我在从 PowerPoint 2007 启动的 Visual Basic 编辑器中输入这一行,我会收到一条错误消息
“编译错误:预期:语句结束”
突出显示“=”符号。
有人对我如何生成“myFile”作为指定目录中最新的 png 文件传递给“AddPicture”有任何建议吗?提前致谢。
【问题讨论】:
-
一种方法是将文件名读入一个数组,然后比较 FileDateTime("path_to_file"); 的结果。如果它大于当前值,则将新的 filedatetime 设为当前值。
标签: vba file-io powerpoint