我们已经知道如何在VBA中打开或保存Excel文件。我们只使用Workbook对象的Open和SaveAs方法。但这需要对文件路径进行硬编码。但是大多数时候,您会希望最终用户使用GUI选择文件,或者说“文件打开”或“另存为”对话框,使用户可以直观,轻松地选择文件的位置。

在本文中,我们介绍了用于显示工作簿打开对话框并另存为对话框的代码。

我已经附上了可以下载的工作簿。本文所附的工作簿包含三个宏===使用“打开文件”对话框打开文件的VBA代码在此代码中,我们将使用Application的GetOpenFilename方法。 GetOpenFilename方法的语法为:

Application.GetOpenFilename([FileFilter],[FilterIndex],[Title],[ButtonText],[MultiSelect]) [FileFilter]:您可以定义在选择文件夹中仅显示一种文件。如果您编写“ Excel文件,.xlsx,.xls,*。xlsm”等。

那么只有excel文件会在文件打开对话框的文件夹中显示。

[FilterIndex]:*这是您要使用的文件过滤器的数量。

[标题]:对话框的标题。

[ButtonText]:*用于指定按钮文本。不重要。

[MultiSelect]:它是一个布尔变量。如果将其设置为True或1,则可以选择多个文件。如果将其设置为false,则只能选择一个文件。

足够的理论。让我们做一些咒语。

VBA代码一次打开一个文件

Option Explicit

Sub OpenOneFile()

Dim FileName As Variant

'Displaying the open file dialog box

FileName = Application.GetOpenFilename("Excel-files,*.xls", _

1, "Select One File To Open", , False)

'User didn't select a file

If TypeName(FileName) = "Boolean" Then Exit Sub

'Open the workbook

Workbooks.Open FileName

End Sub

ArrowOpeningSingle

如何运作?

当您运行这段代码时,Application对象的GetOpenFilename方法将打开一个“打开文件”对话框。对话框的标题将是我们在代码中定义的“选择要打开的文件”。

如果选择一个文件,则将运行Worbook.Open代码并打开该文件。如果您不选择文件,则该子项将在不运行Workbook.Open代码的情况下退出。

一次打开一个或多个文件的VBA代码此段代码将打开文件打开对话框,但您一次可以选择多个文件。

Sub OpenMultipleFiles()

Dim FileName As Variant, f As Integer

'Displaying the open file dialog box

FileName = Application.GetOpenFilename("Excel-files,*.xlsx", _

1, "Select One Or More Files To Open", , True)

'User didn't select a file

If TypeName(FileName) = "Boolean" Then Exit Sub

'Open all the workbooks selected by user

For f = 1 To UBound(FileName)

Workbooks.Open FileName(f)

Next f

End Sub

请注意,这里我们将multiselect变量设置为True。这将启用文件的多重选择。

ArrowOpeningMultiple

打开“另存为”对话框的VBA代码要打开“另存为”对话框,我们将使用Application对象的GetSaveAsFilename方法。该方法的语法为:

Application.GetSaveAsFilename([InitialFileName],[FileFilter],[FilterIndex],[Title],[ButtonText]) [InitialFileName]:*初始文件名。如果您在保存文件时未重命名文件,则文件将以此名称保存。

[FileFilter]:您可以定义在选择文件夹中仅显示一种文件。如果您编写“ Excel文件,.xlsx,.xls,*。xlsm”等。

那么只有excel文件会在文件打开对话框的文件夹中显示。

[FilterIndex]:文件的过滤索引。

[标题]:*对话框的标题。

[ButtonText]:*在Mac系统中用于更改按钮的名称。

请遵循以下代码

Sub SaveFile()

Dim FileName As Variant

'Displaying the saveas dialog box

FileName = Application.GetSaveAsFilename("MyFileName.xls", _

"Excel files,*.xls", 1, "Select your folder and filename")

'User didn't save a file

If TypeName(FileName) = "Boolean" Then Exit Sub

'Save the workbook

ActiveWorkbook.SaveAs FileName

End Sub

SaveFile宏使用Application对象的GetSaveAsFilename方法打开“另存为”对话框,分配文件名,并选择保存工作簿的位置。

ArrowSavingWorkbook

好的,这是您可以使用对话框使用VBA打开和保存文件的方式。希望对您有所帮助。如果您对本文或任何其他VBA主题有疑问,请在下面的评论部分中提问。

相关文章:

使用一个封闭的工作簿作为数据库(DAO)在Microsoft Excel中使用VBA] |要将封闭的工作簿用作具有DAO连接的数据库,请在Excel中使用此VBA代码段。

使用一个封闭的工作簿作为数据库(ADO)在Microsoft Excel中使用VBA] |要将封闭的工作簿用作具有ADO连接的数据库,请在Excel中使用此VBA代码段。

`link:/ applications-word-outlook-in-vba-getting-started-excel-vba-userforms [Excel VBA用户窗体入门] | *要将数据插入数据库,我们使用窗体。 Excel用户窗体对于从用户获取信息很有用。这是从VBA用户表单开始的方法。

===

更改多个用户窗体控件的值/内容在Excel中使用VBA] || *要更改用户窗体控件的内容,请使用此简单的VBA代码段。

当用户单击在Microsoft Excel中使用vba的x按钮时,`link:/ user-forms-input-boxes在vba中防止关闭的用户窗体[通过在Excel中使用VBA防止用户单击x按钮时关闭用户窗体。为了防止用户单击表单的x按钮时关闭用户窗体,我们使用UserForm_QueryClose事件。

热门文章:

`link:/ keyboard-formula-shortcuts-50-excel-shortcuts可提高您的生产率[50 Excel快捷方式可提高生产率]] |更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

link:/ vlookup-functions的公式和函数介绍[Excel中的VLOOKUP函数]|这是excel中最常用和最受欢迎的功能之一,用于从不同范围和工作表中查找值。

link:/ tips-countif-in-microsoft-excel [Excel 2016中的COUNTIF]|使用此惊人的功能对条件进行计数。您无需过滤数据即可计算特定值。

Countif功能对于准备仪表板至关重要。

link:/ excel-formula-and-function-excel-sumif-function [如何在Excel中使用SUMIF函数]|这是仪表板的另一个重要功能。这可以帮助您总结特定条件下的值