Excel 2010 VBA:如何导出当前工作表,询问用户在哪里保存?

我有一个带自定义工具的大型自定义工具栏.xlsm ,用于处理工作中的常见情况。

问题是,我经常需要保存结果,然后发送给其他用户,但我不希望将macros/自定义工具栏保存到已保存的工作簿中。

所以我想这样:添加另一个工作簿,复制/粘贴到新的工作簿实际工作表,然后我想强制打开保存为。

 '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 

问题是,我写文件名并select目的地文件夹,然后按“保存”, 我什么都没有保存! 根本没有创build文件。

编辑1

我的意图可能不清楚。 我有一个.xlsm,我用来从其他来源导入和操作date。 我得到了我需要的所有数据(并且不包含公式)的表单。 我需要创build一个新的工作簿,复制/粘贴到这个新的文件,然后强制打开保存为。 此时我手动select目标文件夹,input文件名并select文件格式,然后按保存。 我需要能够在运行时select这些东西

其实问题是Excel并不真的保存新文件,我不知道为什么。

为什么?

给一下去,还有一次…

  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 

FileDialog类允许用户select文件名,但实际上并没有进行保存。

调用FileDialog.Show ,可以访问FileDialog.SelectedItems属性以获取用户select的文件的名称。

然后调用Workbook.SaveAs来保存文件。