用于从单元格中获取文件名的macros,并提示保存文件的位置

我正在寻找一个macros,它将在运行时从单元格中获取值并使用该名称进行保存,并提示保存文件的path。 以下是我的尝试:

Sub SelectFolder() Dim diaFolder As FileDialog Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) diaFolder.AllowMultiSelect = False diaFolder.Show ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:= _ diaFolder & ActiveSheet.[d2] & ".xlsx", FileFormat:= _ xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False Set diaFolder = Nothing End Sub 

在这个值取自单元格,并有一个提示要求文件夹保存文件。 但该文件不存储在文件夹中,并存储在一个单独的文件夹中。 我想这里需要做一些小的修改。

同时保存,这是给我一个警告,可能有兼容性问题97-2003文件types。 我想这一行中有些东西需要纠正:

 diaFolder & ActiveSheet.[d2] & ".xlsx", FileFormat:= _ xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False 

但不知道要改变什么。 我希望文件在.xlsx中,并且与所有设备兼容。

有人能帮我做这两件事吗?

这是一个工作代码:

 Sub SelectFolder() Dim diaFolder As FileDialog Dim fileName, filePath As String Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) diaFolder.AllowMultiSelect = False diaFolder.Show ActiveSheet.Copy fileName = ActiveSheet.Range("D2").Value 'You need to use diaFolder.SelectedItems(1) and not just diaFolder filePath = diaFolder.SelectedItems(1) & "\" & fileName & ".xlsx" ActiveWorkbook.SaveAs fileName:= _ filePath, FileFormat:=xlWorkbookNormal, Password:="", WriteResPassword:="" _ , ReadOnlyRecommended:=False, CreateBackup:=False Set diaFolder = Nothing End Sub 

注意:
我已经从Excel8 FileFormat更改为xlWorkbookNormal

你的代码中的问题:
1. FileFormat Excel 8表示97-2003 format in Excel 2007-2013, xls并将其保存为.xlsx
2.您只使用diaFolder而不是diaFolder.SelectedItems(1)