我经常制作窗口的屏幕截图并将它们保存到文件夹中,然后将它们添加到以某种方式裁剪、调整大小和对齐的 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 编辑器中输入此行,则会收到一条错误消息
"Compile error: Expected: end of statement"
突出显示“=”符号。
有人对如何生成“myFile”作为指定目录中最新的 png 文件传递给“AddPicture”有任何建议吗?提前致谢。
最佳答案
要使用一个对象,您需要先对其进行尺寸标注,然后再进行设置,您的代码似乎试图同时执行这两项操作。
我不熟悉 DirectoryInfo 对象,但使用文件系统对象,您可以使用以下命令找到最后修改的文件。示例子例程仅说明如何调用 FindLastModifed 函数。
要使用该代码,您需要设置对 Microsoft 脚本运行时的引用。
Function FindLastModified() As String
Dim fso As Scripting.FileSystemObject
Dim myFile As Scripting.File
Dim myFiles As Scripting.Files
Dim dteDate As Date
Dim sFilePathName As String
Set fso = New FileSystemObject
Set myFiles = fso.GetFolder("\\nlamvfs00065\homes\nlkpec").Files
For Each myFile In myFiles
If dteDate < myFile.DateLastModified Then
dteDate = myFile.DateLastModified
sFilePathName = myFile.Path
End If
Next myFile
FindLastModified = sFilePathName
End Function
Sub Example()
Dim sFileNamePath As String
sFileNamePath = FindLastModified
End Sub
关于vba - 在 Visual Basic 中获取目录中的最新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559563/