2

我经常制作窗口的屏幕截图并将它们保存到文件夹中,然后将它们添加到以某种方式裁剪、调整大小和对齐的 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”有任何建议吗?提前致谢。

4

1 回答 1

3

要使用一个对象,您需要对其进行尺寸标注然后对其进行设置,您的代码似乎试图同时进行这两项操作。

我不熟悉 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
于 2013-09-01T23:02:32.760 回答