いつもお世話になっております。
Set xls = CreateObject("Excel.application")
With xls
(中略)
strsavebookpath = strSaveBookDir & strFileName & ".xlsx"
.activeworkbook.saveas strsavebookpath
End With
Exit_here:
xls.Quit
Set xls = Nothing
Exit Sub
Err_Handler:
MsgBox Err.Number & vbtab & Err.Description, vbExclamation
Resume Exit_here
このような感じでエクセルにデータを入れて、saveasで保存しようと思います。
エラーがないときは正しく動きます。
保存先のパス(strsavebookpath)に同一ファイル名が存在する場合のダイアログに、
「いいえ」あるいは「キャンセル」を入力した場合、
あるいは、同一ファイル名が存在する上に、それが開かれている場合などに、
エラー1004が吐き出され、xls.quitのところで、vbaで作ったエクセルを保存するか問われてしまいます。
エラー1004が出るような問題が起こったとき、vbaで作ったエクセルが自動的に破棄されるようにする方法はありますか?
あるいは、もっと良い(あるいは自然な)保存の方法がありますか?
保存しようと思ってたもの破棄しちゃっていいんですか?
https://www.google.com/search?q=VBA Excelを保存しないで終了する方法
名前変えるのがNGなら適当にメッセージボックスだして待機させた後保存処理やり直したらいいんじゃない?
回答ありがとうございます。
としてみたのですが、xls.closeが間違っているということで、うまくいきませんでした。
初歩的な質問で申し訳ございませんが、どうすればよかったのでしょう。
やり直す≒繰り返す動きをさせるのでループ処理を組みます
※これだけだと「保存できない」限り無限ループになることには注意が必要です
回答ありがとうございました。
頂いたコードを参考にして勉強します。