マクロを実行してドキュメントを保存してもダイアログボックスが表示されない

マクロを実行してドキュメントを保存してもダイアログボックスが表示されない

これは私が使用したコードです。デザイナーでこれを実行したときにのみダイアログボックスが表示されます。デザイナーを閉じてマクロを実行するとブックのみが保存されますが、このマクロを実行するたびにダイアログボックスが表示されるようにしたいです。何かアドバイスや提案があればお願いします

Sub SaveAs()
    Dim IntialName As String
    Dim sFileSaveName As Variant
    IntialName = "Sample Output"
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
        ActiveWorkbook.SaveAs sFileSaveName
    End If
End Sub

答え1

コードにはいくつか修正が必要です:

  1. 使用したサブルーチン名が予約語(コマンド)の1つと競合しているため名前を付けて保存したがって、Excel はこのエラーを返します。

ここに画像の説明を入力してください

  1. これをコマンドラインから削除する必要があります。InitialFileName:=

理由:指定された名前でファイルを保存しようとしていますIntialName = "Sample Output"

  1. 最後はタイプミスですInitialName

修正案:

  • サブルーチンの名前を変更します。たとえば、名前を付けて保存またはそれ以外の名前を付けて保存

  • この行を置き換えてください。sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

これで、

sFileSaveName = Application.GetSaveAsFilename(IntialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

  • Propmt を取得します。

ここに画像の説明を入力してください

  • これが使用する完全なコードです。

    Sub SaveMyFileAs()
    
      Dim IntialName As String
      Dim sFileSaveName As Variant
    
      IntialName = "Sample Output"
    sFileSaveName = Application.GetSaveAsFilename(IntialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")
    
      If sFileSaveName <> False Then
        ActiveWorkbook.SaveAs sFileSaveName
      End If
    
       End Sub
    

注意このコードは、ワークブックを閉じる前イベントも。

関連情報