2016-08-22 11 views
0

小さなマクロを作成して、MS Excel 2010(「MS Office Professional Plus 2010」の違いがある場合に備えて)で[名前を付けて保存]ダイアログを使用するようにしました。同じ名前。xlDialogSaveAsでExcelがクラッシュする

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    If Not SaveAsUI Then 
     msg = "Use the 'Save As' dialog to save a new version of the file" 
     Style = vbOKCancel 
     Query = MsgBox(msg, Style) 
     If Query = vbOK Then 
      Application.Dialogs(xlDialogSaveAs).Show 
     ElseIf Query = vbCancel Then 
      Cancel = True 
     End If 
    End If 
End Sub 

私は "Ctrl-S"を押してプロンプトを表示します。私は "OK"をクリックしてSaveAsダイアログを使ってファイルを別の名前で保存します。しかし、ダイアログの「保存」ボタンを押すとExcelがクラッシュします。

おそらくxlDialogSaveAsコマンドを間違った方法で使用していますが、なぜこれが機能しないのかわかりません。デバッガにエラーメッセージはありません。ワークブックのどこにも他のVBAコードはありません。ブックを.xlsmファイルとして保存しようとしています(SaveAsダイアログが正しくデフォルト設定されています)。

誰かが私を助けることができる人がいますか?

+0

私はちょうどそれを試してみました(2013エクセル)と、それ私のために働く。どのバージョンのExcelをお持ちですか?どのファイルタイプを保存していますか?別のファイル名を試しましたか?このワークブックに他のコードがありますか? –

+0

こんにちはマイケル、私のアプローチが完全に間違っていなかったことを知ってよかった...!私はExcel 2010を使用しています。それは可能かもしれませんが、私はいくつかの古いフォーラムエントリでそのコマンドを見つけたのでそれは驚くべきことです。 SaveAsダイアログのデフォルトは ".xlsm"で、そのまま保存します。私がしているのは名前を変えることだけです。私は別の名前を試みたが役に立たなかった。ブックにはどこにも他のコードはありません。 –

+0

SaveAsを使用するだけでExcelがクラッシュするのはなぜですか?どこにしようとしてもそれを保存しても、名前をつけてもクラッシュしますか?それは実際に保存される前に、ファイルを保存してクラッシュまたはクラッシュしますか? –

答えて

1

試してみてください、

If Query = vbOk Then 
    Application.Dialogs(xlDialogSaveAs).Show 
End If 
Cancel = True. 

私は、元の呼び出しで保存しようと、あなたが開く新しいダイアログで保存しようとする問題がある疑いがある

関連する問題