项目VBA获取文件名

Posted

技术标签:

【中文标题】项目VBA获取文件名【英文标题】:project VBA get filename 【发布时间】:2016-08-26 14:52:43 【问题描述】:

我正在尝试使用 MS Project 2013 打开一个文件选择器框,选择一个 .pptx 文件,然后打开它。

如果我在 VBA 中记下文件路径,我的代码会毫无问题地打开 pptx 并做它必须做的事情。

我的问题是我无法使用 msoFileDialogFilePicker 对象。我已将引用设置为使用 MS Word 对象库、Visual basic for Applicaitons 甚至 Excel 对象,但无论我选择什么引用,Application 对象都无法识别它。

我也尝试过 getOpenFilename 方法,但应用程序也无法识别它。

到目前为止,这是我的代码:

Dim strTemplatePPT As String
strTemplatePPT = Application.GetOpenFilename("Modelos de PowerPoint,*.pptx*", 1, "Abrir Arquivo", , False)

Set ppAppl = CreateObject("PowerPoint.Application")
ppAppl.Visible = True
Set ppPres = ppAppl.Presentations.Open(strTemplatePPT, msoFalse)

有人遇到过这个问题吗?

谢谢。

【问题讨论】:

你想怎么打电话给FileDialog()? Project 似乎不支持此方法,但您应该可以在您的 ppAppl 对象上调用它。 也许你可以从this post中受益 【参考方案1】:

正如jsheeran所说,可以在ppAppl对象内部使用FileDialog()方法,如下:

Dim strTemplatePPT As String
Dim ptr_fileDialog As FileDialog

Set ppAppl = CreateObject("PowerPoint.Application")

Set ptr_fileDialog = ppAppl.FileDialog(msoFileDialogFilePicker)
ptr_fileDialog.Title = "Escolha o arquivo de Template"
ptr_fileDialog.Filters.Clear
ptr_fileDialog.Filters.Add "Arquivo Powerpoint", "*.pptx"
ptr_fileDialog.Show
strTemplatePPT = ptr_fileDialog.SelectedItems(1)

If (strTemplatePPT = "-1") Then Exit Sub

ppAppl.Visible = True
Set ppPres = ppAppl.Presentations.Open(strTemplatePPT, msoFalse)

即使 Project 本身没有打开 fileDialog,我也可以使用 powerpoint 实例将结果发送回 Project,因为我将在我的其余代码中使用 powerpoint。

非常感谢提供信息的人:)

【讨论】:

以上是关于项目VBA获取文件名的主要内容,如果未能解决你的问题,请参考以下文章

VBA获取某文件夹下所有文件和子文件目录的文件

访问数据项目在VBA中导入CSV文件

如何在excel VBA中获取保存文件的路径和名称?

如何使用 VBA 从单元格中获取一些字符

VBA - 如何在 Excel 2010 的目录中获取最后修改的文件或文件夹

在 VBA for Word 中获取保存的文件名