現在のファイルをマクロのフリーファイルとして保存するように求めるメッセージが表示される場合、キャンセルするとエラーが発生する。私は、ユーザーがキャンセルをヒットしたときに最初からやり直すコードが必要です。メッセージボックスがポップアップし、ファイルを保存する場所を選択してからダイアログボックスが再度ポップアップし、ファイルを保存する場所をユーザーが選択できるようにし、ユーザーがもう一度キャンセルしてから終了するように指示するのが最善の方法です。ユーザーがダイアログボックスをキャンセルしたときにマクロを使用せずに保存するフォルダを選択する
Sub SaveWithoutMacro()
Dim objFolder As Object, objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(ChooseFolder)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=objFolder & "\" & Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 5) & ".xlsx", FileFormat:=51, password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
If objFolder <> False Then Exit SaveWithoutMacro = objFolder
Application.DisplayAlerts = True
Application.ScreenUpdating = True
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
So * my *コード[Jeremy](https://stackoverflow.com/a/47562372/1505120)でも書いていますが。 – pnuts