ファイルの別名保存方法と終了時の問題
- Excelの素人がファイルの別名保存ボタンを作成したが、終了時に問題が発生している。
- 保存せずに終了するかどうかの確認メッセージが表示されない。
- ボタンをクリックするといきなり終了してしまう。
- ベストアンサー
ファイルの別名保存の方法
こんにちは。 Excelの素人です。blg.を参考に、ファイルの別名保存ボタンを作りましたが、別名保存後うまく終了してくれません。 現象は終了マクロから名前をつけて保存してもファイルが終了しません。もう一度ボタンをクリックするといきなり終了します。 素人の悲しさで、どこを修正すればよいのか悩んでいます。 Sub 別名保存後終了() If ThisWorkbook.Saved = False Then strFilename = ThisWorkbook.Path & "\" & _ "データ作成" & "_" & _ Format(Date, "yyyymmdd") & ".xls" strFilename = Application.GetSaveAsFilename( _ FileFilter:="Excelファイル,*.xls", _ InitialFileName:=strFilename, _ Title:="Excelファイルの保存") If strFilename = "False" Then If MsgBox("保存せずに終了します。よろしいですか?", _ vbOKCancel + vbInformation, _ "終了確認") = vbOK Then ThisWorkbook.Saved = True ThisWorkbook.Close Else Exit Sub End If Else ActiveWorkbook.SaveAs strFilename End If Else ThisWorkbook.Close End If End Sub 宜しくお願いします。
- fish_001
- お礼率44% (4/9)
- Visual Basic
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
前省略 ActiveWorkbook.SaveAs strFilename ThisWorkbook.Close '別名で保存した後に閉じる設定が抜けてます。 End If Else ThisWorkbook.Close End If End Sub
関連するQ&A
- エクセル/BeforeCloseイベントで保存できない!?
エクセル2000です。 以下の_BeforeCloseイベントのマクロ(非常に簡略化してますが)ですが、標準モジュールに設定した Sub 終了() ActiveWorkbook.Close End Sub から終了させた場合、ActiveWorkbook.Saveの部分だけが働かないようです。 エクセル画面右上の×で終了させた場合は保存されます。 どうしてでしょうか? Private Sub Workbook_BeforeClose(Cancel As Boolean) With Sheet1 If .Range("A1") <> .Range("B1") Then ret = MsgBox("変更を保存しますか?" _ + Chr(&HD) + Chr(&HA) + "" _ + Chr(&HD) + Chr(&HA) + "新:" & .Range("A1") _ + Chr(&HD) + Chr(&HA) + "旧:" & .Range("B1"), vbYesNo + vbQuestion, " 確認") If ret = vbYes Then ActiveWorkbook.Save '←なぜ保存されないの?! MsgBox "保存しました" ThisWorkbook.Saved = True ActiveWorkbook.Close (False) End If Else ThisWorkbook.Saved = True ActiveWorkbook.Close (False) End If End With End Sub
- ベストアンサー
- オフィス系ソフト
- excelファイルが意図せず起動
下記を参考にして、起動時にタイマーを設定してexcelファイルを5分後に自動的に 保存・終了するようにしています。 http://okwave.jp/qa/q2911086.html しかし実際5分を待たず、手動でそのexcelファイルを終了した場合、 後でそのexcelファイルが自動で起動して、そのまま終了しているようです。 この症状をなくしたい場合どのように、記述を加えればよいか教えていただけないでしょうか? 記述は下記です。 '標準プロシージャ Public Operated As Boolean Sub SetTimer() Application.OnTime Now + TimeValue("00:05:00"), "CloseMe" End Sub Sub CloseMe() If Operated Then Operated = False SetTimer Exit Sub End If 'ブックの上書き保存 ActiveWorkbook.Save ' 保存確認を避けるため、保存済みにする ThisWorkbook.Saved = True ' 他にブックが開いていなければ、Excelを終了する If Workbooks.Count <= 1 Then Application.Quit ' 本ブックをClose ThisWorkbook.Close False End Sub 'ワークブックプロシージャ Private Sub Workbook_Open() Operated = False SetTimer End Sub Private Sub Workbook_BeforePrint(Cancel As Boolean) Operated = True End Sub Private Sub Workbook_Deactivate() Operated = True End Sub Private Sub Workbook_Activate() Operated = True End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) Operated = True End Sub
- ベストアンサー
- Excel(エクセル)
- VBAでファイルを保存せずに閉じた後の他ブックの挙動
初めて質問させていただきます。 VBA初心者の為、質問自体に不足があるかもしれませんが、ご協力をお願い致します。 エクセル2000(SP3)で複数のブック(仮にA.xls,B.xlsとします)を起動した状態で、Aをマクロを使って保存せずに終了させたところ、Bの操作が出来なくなります。(セル選択等もできません。Bのsheetを選択するとアプリケーションエラーになってしまいます) 同Windows上に他アプリケーションが起動している場合、それらを一度選択してから再度Excelを選択すると、Bの操作が可能になります。 保存せずに終了させる為のマクロは次のとおりです。 ブックAのThisWorkbook内に記述しています。 Private Sub Workbook_BeforeClose(Cancel As Boolean) If Workbooks.count = 1 Then Application.DisplayAlerts = False Application.Quit Else ThisWorkbook.Close SaveChanges:=False End If End Sub 以上、よろしくお願い致します。
- ベストアンサー
- Visual Basic
- VBAによるカレントフォルダのファイルを検索し開く
カレントフォルダ内にファイル(コ―ド.xls)を見つけ開き、無ければMSG表示したい。 どのように、したらいいですか? 考えているのは、 Application.DefaultFilePath = ThisWorkbook.Path If ??? Then Workbooks.Open "コード.xls" else msgbox (ThisWorkbook.Path & "にコード.xlsを置いて下さい。") Exit sub end If です。 この???の部分を教えて頂きたいと思います。 よろしくお願いします。
- 締切済み
- その他MS Office製品
- EXCELで保存済みにしたい
EXCELのマクロである処理をするプログラムを作っています。 その中でVBAでListBoxに項目を動的に追加しています。 ListBoxに項目を追加すると終了時、 「ListBox.xlsへの変更を保存しますか?」の確認ダイアログが出ています。 このメッセージを出したくないのですがどうしたらよいですか? 以下がそのソースです。 '------------------------------------------------------ Option Explicit 'ListBox1に項目を追加 Private Sub CommandButton1_Click() ListBox1.AddItem ("りんご") ListBox1.AddItem ("みかん") ThisWorkbook.Saved = True End Sub '保存済みの確認 Private Sub CommandButton2_Click() MsgBox ThisWorkbook.Saved End Sub 'セルを変更しても保存済みにする Private Sub Worksheet_Change(ByVal Target As Range) ThisWorkbook.Saved = True End Sub '--------------------------------------------------------- セルの変更はWorksheet_Changeイベントで ThisWorkbook.Saved = True で確認ダイアログが出ないようにしています。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- エクセル シートのみ 保存
過去の質問も参照しましたが 当てはまる物が無くて質問しました! シート上にボタンを作成して クリックするとそのシートのみ 指定するファイルにコピーさせたいです! 下記の部分で何処を変化させればよいのでしょうか? (1)~(2)の部分で困っています。 Private Sub CommandButton1_Click() Dim FileName As String Dim FileExt As String ’(1)の質問!○=の部分をSheets(セルのA1の値をファイル名に入れたいです) FileName = "○"& Format(Now, "yyyy-mm") & ".XLS" '==== FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName) If FileName = "" Then Exit Sub Else If Right(FileName, 4) <> ".XLS" Then MsgBox "ファイル名が異常です。" Exit Sub End If End If '==== FileName = "D:\保存\ケア\計画\" & FileName If Dir(FileName) <> "" Then '##ファイルが既に存在する If MsgBox("既に指定のファイルが存在します。 上書きしますか?", vbOKCancel, "上書きの確認") = vbCancel Then '##保存せずに終了 Exit Sub ElseIf ThisSheets.FullName = FileName Then '##現在開いているファイルと同じなら上書き保存 ThisSheets.Save Else '##指定ファイルを削除した後保存 Kill FileName ThisSheets.SaveCopyAs FileName:=FileName End If Else '##ファイルを新規保存 ThisSheets.SaveCopyAs FileName:=FileName End If ThisSheets.Saved = True End Sub (2)ThisSheets&指定してもう一つだけ 保存先にコピーしたいです!つまり 2つのSheetのみ保存させたいのですが・・ ここからどのようにしたら良いのか お願いします!教えて下さい。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで保存がうまくいきません
エクセル2000です。 下記のようなVBAを記述しました。 「はい」なら別名保存 「いいえ」なら上書き保存のつもりです。 問題点 Sheets("AAA").Range("I9")の文字列内に.(半角ピリオド)があるとファイルに拡張子がつきません。 どうしたらよいのでしょうか?非常に困っています。 Sub 保存ボタン() Dim myYN As Integer Dim DRtn As Boolean Dim fn As String, fn2 As String fn = Sheets("AAA").Range("I9").Value & "_保存" fn2 = ThisWorkbook.Name myYN = MsgBox("現在の入力内容を別名で保存しますか?" _ + Chr(&HD) + Chr(&HA) + "別名保存なら「はい」" _ + Chr(&HD) + Chr(&HA) + "上書保存なら「いいえ」を選択します。" _ + Chr(&HD) + Chr(&HA) + "", vbYesNoCancel + vbQuestion, " 別名保存") If myYN = vbCancel Then Exit Sub 'キャンセルなら終了 If myYN = vbNo Then fn = fn2 '上書保存ならファイル名はそのまま DRtn = Application.Dialogs(xlDialogSaveAs).Show(ARG1:=fn, ARG2:=1) If DRtn = False Then Exit Sub 'ファイル名を消されたらキャンセル ThisWorkbook.Save '保存 ThisWorkbook.Close '閉じる End Sub
- ベストアンサー
- オフィス系ソフト
- もしも新規Excelファイルを開いてる場合は閉じる
Excel2003です・ ユーザーが新規Excelファイル(book1)かテスト用ファイルを開いている場合は閉じる処理を考えております。 Option Explicit Dim ws As Workbook, flag As Boolean Private Sub Workbook_Open() For Each ws In Workbooks If ws.Name = "Book1" Then flag = True Next ws If flag = True Then Workbooks("Book1.xls").Close Else End IF For Each ws In Workbooks If ws.Name = "テスト用.xls" Then flag = True Next ws If flag = True Then Workbooks("テスト用.xls").Close Else End IF End Sub このコードだとBook1を開いているのに、Trueで拾ってくれません。 ws.Name = "Book1.xls"にしても同じです。 どこかおかしい部分があるのでしょうか?
- ベストアンサー
- その他MS Office製品
- ExcelVBA ファイルクローズ時にエラーとなる
次の記述で、コマンドボタン2クリックで、ブックが1つならExcelを、複数なら現在のブックを 閉じる動作をします。 Excelのバージョンが2010なら問題ありませんが、2003や2007だと、複数ブックがある時に 「問題が発生したため・・・Excelを終了します」のメッセージがでます。 Private Sub CommandButton2_Click() If Workbooks.Count > 1 Then ThisWorkbook.Close SaveChanges:=True Else ThisWorkbook.Save Application.Quit End If End Sub これの対処方法を教えてください。
- ベストアンサー
- Visual Basic
- Excel VBAでのSaveCopyAsの挙動
Excel 2016/2019を使っています。よろしくお願いします。 ブックに変更があった場合にバックアップを保存したいので、 上書きにならないように日付と連番をつけてバックアップ専用フォルダにSaveCopyAsを使って保存しようとしています。 明示的に「保存」アイコンをクリックすると期待通りの動作が行われます。しかし、保存せずに「x」印をクリックして閉じてしまった場合でも、変更があるならバックアップファイルを作りたいのですが、SaveCopyAsを通っているのにバックアップファイルが作成されません。 記載したコードは以下のとおりです。 ThisWorkbookオブジェクトに対して、 Public Sub Workbook_beforeClose(Cancel As Boolean) '変更があれば(ThisWorkBookを)保存 If ThisWorkBook.Saved = False Then ThisWorkBook.Save End If End Sub 'ThisWorkBookの保存時にバックアップを作成 Private Sub Workbook_BeforeSave(省略) If ThisWorkbook.Saved = False Then 'バックアップファイルのフルパスを作成 ThisWorkbook.SaveCopyAs "バックアップファイルフルパス" End Sub 何かヒントをお持ちの方みえられましたらご教示いただければ幸いです。
- ベストアンサー
- Excel(エクセル)
お礼
ありがとうございます。 大変助かりました。