使用对话框打开和保存工作簿
我们已经知道如何在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
如何运作?
当您运行这段代码时,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。这将启用文件的多重选择。
打开“另存为”对话框的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方法打开“另存为”对话框,分配文件名,并选择保存工作簿的位置。
好的,这是您可以使用对话框使用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函数]
|这是仪表板的另一个重要功能。这可以帮助您总结特定条件下的值