带有自定义过滤器的 Word VBA 另存为对话框?

Posted

技术标签:

【中文标题】带有自定义过滤器的 Word VBA 另存为对话框?【英文标题】:Word VBA Save As Dialog with custom filter? 【发布时间】:2013-06-19 21:37:50 【问题描述】:

Word VBA 中的“另存为”对话框有客户过滤器的方法(代码)吗?例如:“.ttt”

【问题讨论】:

您要显示预定义文件类型的“另存为”对话框吗?但它不会将文件转换为“.psd”,因为 word 不支持这种类型... .psd 文件格式是展示自定义过滤器的示例。谢谢 【参考方案1】:

我认为您可能想使用Application.FileDialog,因为它允许自定义文件过滤器。正如 KazJaw 指出的那样,您无法在 Word 中保存 Photoshop 文件,因此我认为它允许对 psd 文件进行其他操作。

下面将向您展示如何使用它(请参阅http://msdn.microsoft.com/en-us/library/aa219843%28office.11%29.aspx)。请注意,这将允许用户选择多个文件。

Sub CustomFilter()
    'Declare a variable for the FileDialog object and one for the selectedItems
    Dim fd As FileDialog, vSelectedItem As Variant

    'Create a FileDialog object as a File Picker dialog box.
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    'With the FileDialog
    With fd
        .Filters.Clear                              'Clear current filters
        .Filters.Add "Photoshop Files", "*.psd", 1  'Add a filter that has Photoshop Files.

        If .Show = -1 Then
            'Step through each String in the FileDialogSelectedItems collection.
            For Each vSelectedItem In .SelectedItems
                'Do whatever you want here
            Next vSelectedItem
        Else
            'The user pressed Cancel.
        End If
    End With

    Set fd = Nothing
End Sub

【讨论】:

.psd 文件格式是展示自定义过滤器的示例。此外,这是否适用于“另存为”对话框? 您不能在 SaveAs 对话框中使用自定义过滤器(默认 Word 文件类型之外),如果您想使用自定义过滤器(例如 .psd 或 .ttt),您必须使用 FileDialog 框。为什么需要使用 SaveAs? (您可以使用文件对话框获取文件名,然后保存。) 但是,文件必须存在才能使用 FileDialog? 一点也不。如果文件不存在,那么用户将按下取消,.Show 的值将等于0(根据记忆,我目前不在计算机旁),然后您可以使用代码来处理它。

以上是关于带有自定义过滤器的 Word VBA 另存为对话框?的主要内容,如果未能解决你的问题,请参考以下文章

AppleScript“另存为”对话框?

Excel VBA:将工作簿另存为 Word 文档

用于在另存为对话框中将工作表另存为预命名文件的 VBA 代码

从共享驱动器加载的 Word 文档的本地副本无法使用 VBA 另存为 PDF 方法。不保存文档

如何使用以下 VBA 代码在生成“另存为”对话框并导出 Access 查询的表单上创建命令按钮?

在c#中使用word为啥在关闭时总是显示“另存为”对话框