- ベストアンサー
「変更を保存しますか?」と聞かれたくない
- 現在のファイルと同名のCSVファイルを作成したいが、「変更を保存しますか?」と聞かれる問題に直面しています。
- 保存する方法を教えてください。
- 無条件で保存したいし、変更していないのになぜ聞かれるのか理解できません。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
エクセルのワークシート画面でCSVファイルをただ閉じる操作をしてみると、保存済みであるか否かを問わずに必ず保存しますかと聞いてきます。状態を保持できるエクセルワークブックと違い、CSVファイルでは「保存された」を保持できません。 簡単な対応: ActiveWorkbook.SaveAs Filename:=MyFileName & ".csv", FileFormat:=xlCSV ActiveWindow.Close savechanges:=false のようにしてみます。 先に一回保存してあるので、保存せずに強制的に閉じます。 #参考 実はsavechanges:=trueにしてもメッセージを出さずに閉じられます。今のマクロでは意味のないことですが。 #別の方法 メッセージの発報を抑制します activeworkbook.saveas filename:=… application.displayalerts = false activeworkbook.close application.displayalerts = true
その他の回答 (3)
- 米沢 栄蔵(@YON56)
- ベストアンサー率36% (37/102)
ActiveWindow.Close→ActiveWindow.Close False でOKですよ。
お礼
ありがとうございます。
- WindFaller
- ベストアンサー率57% (465/803)
質問のコードは、たぶん、省略されているとは思うのですが、そのコードでは、空のファイルになるだけのような気がします。「保存」が問われるのは、CSVですと、Excelフォーマット形式の情報が失われてしまうから、どうするか聞いてくるわけですね。 >無条件で保存 ということになると、こちらの解釈ですが、もしも既に同じ名前のファイルがある時は、上書き保存ということですね。私のは少し違う意味ですが、他のみなさんの書いたテクニックで良いと思います。 '// Sub Create_CSV_NewFile() Dim mName As String Dim mPath As String With ActiveWorkbook mPath = .Path & "\" mName = .Name mName = Left(mName, InStr(mName, ".") - 1) End With ActiveSheet.Copy With ActiveWorkbook Application.DisplayAlerts = False '強制的に上書き保存 .SaveAs mPath & mName & ".csv", FileFormat:=xlCSV .Close False Application.DisplayAlerts = True End With End Sub
お礼
ありがとうございます。
- bin-chan
- ベストアンサー率33% (1403/4213)
Workbooks.Add ActiveWorkbook.SaveAs Filename:=MyFileName & ".csv", FileFormat:=xlCSV ActiveWorkbook.Save ActiveWindow.Close End Sub を Workbooks.Add ActiveWorkbook.SaveAs Filename:=MyFileName & ".csv", FileFormat:=xlCSV ’以下1行追加 メッセージ抑止を設定する Application.DisplayAlerts = False ’以下1行コメントアウト ''''ActiveWorkbook.Save ActiveWindow.Close ’以下1行追加 メッセージ抑止を解除する Application.DisplayAlerts = True End Sub でどうでしょう?
お礼
ありがとうございます。
お礼
ありがとうございます。