vba - 在 Visual Basic 中获取目录中的最新文件

标签 vba file-io powerpoint

我经常制作窗口的屏幕截图并将它们保存到文件夹中,然后将它们添加到以某种方式裁剪、调整大小和对齐的 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/

相关文章:

vba - 将多个单元格乘以另一个数字的最快方法是什么?

delphi - 将 PowerPoint VBA 代码转换为 Delphi, "keep source formatting"问题

excel - 如何将excel中的图片复制到PPT的形状?

excel - VBA:在新工作表上创建数据透视表

excel - 如何让 VBA 代码等待 vbModeless 用户窗体关闭

java - 在 Java 中,如何使用 posix 通配符语法从多个文件中读取数据?

c - getc 和 fscanf 之间的区别

c# - 在 C# 中在几秒钟内创建一个巨大的虚拟文件

javascript - 有没有ppt模拟的javascript库?

VBA、模拟和数组