Excel 2010 VBA: 如何导出当前工作表询问用户保存位置?
Excel 2010 VBA: How to export the current worksheet asking user where to save?
我有一个 .xlsm
,带有一个很大的自定义工具栏,里面装满了用于处理工作中常见情况的自定义工具。
问题是我经常需要保存结果然后发送给其他用户,但我不想将宏/自定义工具栏保留到保存的工作簿中。
所以我正在尝试这样:添加另一个工作簿,copy/paste实际工作sheet到新工作簿中,然后我想强制打开另存为。
'copy entire sheet
Cells.Copy
Range("B2").Select 'just to leave only one cell selected when I return
'Paste into a new workbook sheet 1
Workbooks.Add
Cells.Select
Application.DisplayAlerts = False
ActiveSheet.Paste
Application.DisplayAlerts = True
ActiveSheet.Range("B2").Select 'select only one cell
With Application.FileDialog(msoFileDialogSaveAs)
.Show
End With
问题是,在我输入文件名并选择目标文件夹并按 'Save' 后,我什么也没有保存!根本没有创建文件。
编辑 1
可能是我的意图不明确。我有一个 .xlsm,用于从其他来源导入和操作日期。我得到了一个包含我需要的所有数据的 sheet(其中不包含公式)。我需要创建一个新工作簿,将 copy/paste 和 sheet 放入这个新文件中,然后强制打开另存为。此时我手动select目标文件夹,输入文件名并选择文件格式,然后按保存。我需要能够选择这些东西在运行时
实际上问题是 Excel 并没有真正保存新文件,我不知道为什么。
为什么?
FileDialog
class 允许用户 select 一个文件名,它实际上并不进行保存。
调用 FileDialog.Show
后,您可以访问 FileDialog.SelectedItems
属性 以获取用户 select 编辑的文件的名称。
然后调用Workbook.SaveAs
保存文件。
试一试,再来 1 次...
Sub SaveASDiBox()
Dim FlSv As Variant
Dim MyFile As String
Dim sh As Worksheet
Set sh = Sheets("Sheet1")
sh.Copy
MyFile = "YourFileName.xlsx"
FlSv = Application.GetSaveAsFilename(MyFile, fileFilter:="Excel Files (*.xlsx), *.xlsx)", Title:="Enter your file name")
If FlSv = False Then Exit Sub
MyFile = FlSv
With ActiveWorkbook
.SaveAs (MyFile), FileFormat:=51, CreateBackup:=False
.Close False
End With
End Sub
我有一个 .xlsm
,带有一个很大的自定义工具栏,里面装满了用于处理工作中常见情况的自定义工具。
问题是我经常需要保存结果然后发送给其他用户,但我不想将宏/自定义工具栏保留到保存的工作簿中。
所以我正在尝试这样:添加另一个工作簿,copy/paste实际工作sheet到新工作簿中,然后我想强制打开另存为。
'copy entire sheet
Cells.Copy
Range("B2").Select 'just to leave only one cell selected when I return
'Paste into a new workbook sheet 1
Workbooks.Add
Cells.Select
Application.DisplayAlerts = False
ActiveSheet.Paste
Application.DisplayAlerts = True
ActiveSheet.Range("B2").Select 'select only one cell
With Application.FileDialog(msoFileDialogSaveAs)
.Show
End With
问题是,在我输入文件名并选择目标文件夹并按 'Save' 后,我什么也没有保存!根本没有创建文件。
编辑 1
可能是我的意图不明确。我有一个 .xlsm,用于从其他来源导入和操作日期。我得到了一个包含我需要的所有数据的 sheet(其中不包含公式)。我需要创建一个新工作簿,将 copy/paste 和 sheet 放入这个新文件中,然后强制打开另存为。此时我手动select目标文件夹,输入文件名并选择文件格式,然后按保存。我需要能够选择这些东西在运行时
实际上问题是 Excel 并没有真正保存新文件,我不知道为什么。
为什么?
FileDialog
class 允许用户 select 一个文件名,它实际上并不进行保存。
调用 FileDialog.Show
后,您可以访问 FileDialog.SelectedItems
属性 以获取用户 select 编辑的文件的名称。
然后调用Workbook.SaveAs
保存文件。
试一试,再来 1 次...
Sub SaveASDiBox()
Dim FlSv As Variant
Dim MyFile As String
Dim sh As Worksheet
Set sh = Sheets("Sheet1")
sh.Copy
MyFile = "YourFileName.xlsx"
FlSv = Application.GetSaveAsFilename(MyFile, fileFilter:="Excel Files (*.xlsx), *.xlsx)", Title:="Enter your file name")
If FlSv = False Then Exit Sub
MyFile = FlSv
With ActiveWorkbook
.SaveAs (MyFile), FileFormat:=51, CreateBackup:=False
.Close False
End With
End Sub