如何从xlsm转换到xlsx保持相同的名称

我怎么能改变从xlsmxlsx的格式。 我需要一个脚本来保存xlsx扩展名的xlsm文件的副本,但不要求用户input文件名,它需要保留原来的名字,用户需要做的唯一的事情就是select在哪里保存文件。

 Sub changeext() Dim s_as As String s_as = ThisWorkbook.FullName s_as = Left(s_as, InStrRev(s_as, ".") - 1) & ".xlsx" ThisWorkbook.SaveAs FileName:=s_as Application.DisplayAlerts = False End Sub 

我认为你只想添加一个.xlxs副本不写在您的macros启用工作簿。 尝试下面的代码行,它应该工作,把你的工作簿名称放在“把工作簿名称放在这里”,打开的文件将是.xlsx文件。

 Application.ScreenUpdating = False Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & "Put Workbook Name here" & ".xlsx", FileFormat:=51, Password:="", WriteResPassword:="", _ ReadOnlyRecommended:=False, CreateBackup:=False Application.DisplayAlerts = True Application.ScreenUpdating = True 

您需要创buildFolderPickerfunction:

 Sub changeext() Dim objFolder As Object, objFSO As Object Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(ChooseFolder) ThisWorkbook.SaveCopyAs Filename:=objFolder & "\" & Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4) & "xlsx" End Sub Function ChooseFolder() As String Dim fldr As FileDialog Dim sItem As String Set fldr = Application.FileDialog(msoFileDialogFolderPicker) With fldr .Title = "Select a Folder to save down the copy of this workbook" .AllowMultiSelect = False .InitialFileName = strPath If .Show <> -1 Then GoTo NextCode sItem = .SelectedItems(1) End With NextCode: ChooseFolder = sItem Set fldr = Nothing End Function