我有一个包含大约20个模块的VBA宏,它们在工作簿中创建单独的电子表格。他们还将宏的每个模块创建的单个电子表格保存到共享驱动器上的特定文件夹中。
这是将电子表格保存到单独文件夹的几行代码。
z = Format(DateTime.Now, "dd-MM-YYYY hhmm")
wb.SaveAs "J:\AAAA\BBBB\CCCC\DDDD\mod1" & z & ".xlsx"
Workbooks("mod1" & z & ".xlsx").Close savechanges:=True
但是,由于此文件现在在具有不同功能的多个用户之间共享,因此用户现在希望能够单独设置将保存生成的电子表格的位置。
我正在寻找的是宏打开新窗口的一些方法,以及用户选择文件路径的方法。然后将该文件路径存储到宏中,以便每个模块都可以读取需要存储的文件位置。
这可能吗?
编辑1:
我应该让事情变得更清楚。道歉。
上面的代码在每个模块中都会被复制。此外,所有模块都从一个总体模块运行,该模块调用另一个模块。
我正在寻找的代码是允许用户在总体模块的开头选择保存位置。例如。 J□\ AAA \ CCC \ XXX。调用模块时,将检索文件路径,然后将文件保存到该位置。
答案 0 :(得分:4)
使用此功能:
Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder"
.AllowMultiSelect = False
'.InitialFileName = strPath
If .Show <> -1 Then GoTo NextCode
sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
返回文件夹路径
答案 1 :(得分:0)
如果您想让他们选择文件名,您可以使用此功能。它会提示用户输入文件夹位置和文件名。该函数返回绝对文件路径。如果用户取消了对话框,则返回vbNullString
。
Public Function SaveWorkbook() As String
Dim fileName As Variant
fileName = Application.GetSaveAsFilename(fileFilter:="Excel Workbook (*.xlsx), *.xlsx")
If fileName <> False Then Exit SaveWorkbook = fileName
End Sub