マクロを実行後、ブックをクローズした後に再度ブックを呼び込む方法を教えてください。
マクロ
Sub Macro1()
Dim FolderPath As String
Dim FileName As String
' フォルダとファイル名を指定
FolderPath = "\\Nas-sp01\share\確認部\行政報告フォルダ\☆確認済交付月別物件(完了検査対象)\" & Worksheets("300").Range("A41").Text & " 【担当】確認番号 建物名称\" & Worksheets("300").Range("A43").Text & "\"
FileName = Worksheets("1").Range("X1").Text & ".xlsm"
' 上書き保存
ThisWorkbook.Save
' 指定したフォルダとファイル名に保存
Application.DisplayAlerts = False
ThisWorkbook.SaveAs FileName:=FolderPath & FileName, FileFormat:=xlOpenXMLWorkbookMacroEnabled
Application.DisplayAlerts = True
ThisWorkbook.Close
End Sub
があります。
作業ブックの作業完了後に、マクロを実行すると指定フォルダ先に指定セル値をファイル名として新しいファイルが保存された後、ブックがクローズします。
クローズした後はExcel(添付の画像を参照)が開いたままの状態です。
この状態から先に作業をしていたブックを呼び込む(立ち上がる)方法を教えてください。
作業ブックはマクロ有効形式「.xlsm」で保存されており、このファイル名は物件によって色々と変更になりますが、作業ブックが保存されているフォルダ内にはこの作業ブック「.xlsm」しかありません。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは
一旦、上書き保存をしているようなので、(変更のない)元のブックを開きたいということではないものと解釈しました。
想像するところ、SaveAsによって開いているブックのブック名が変更されるので、それを元に戻したいということではないかと推測しました。
方法はいくつか考えられます。
1)SaveAsを利用する
処理順序として、別名保存した後で「元のファイル名」で(別名)保存するようにする
(この場合、前に行っている上書き保存は不要)
2)上書き保存した後、SaveAsではなくファイルをコピーして別名保存に代える
(FileCopyまたは、FileSystemObject オブジェクトの CopyFile メソッド)
https://learn.microsoft.com/ja-jp/office/vba/lan …
https://learn.microsoft.com/ja-jp/office/vba/lan …
3)現状の処理でCloseする前に「元のブック」をOpenしておく。
https://learn.microsoft.com/ja-jp/office/vba/api …
すぐに思いつくのはこれくらいですが、お好きな方法でなされば宜しいかと思います。
No.1
- 回答日時:
ご質問いただいた状況では、既に作業ブックを閉じているため、作業ブックを呼び込むことはできません。
作業ブックを呼び込む前に、マクロで作業ブックを閉じずに開いておく必要があります。もし、作業ブックを閉じた後に再度開くことが必要な場合は、作業ブックのファイルパスを保持しておく必要があります。例えば、マクロを実行した時点での作業ブックのファイルパスをグローバル変数に保存しておき、後で必要になったときに呼び出すことができます。
以下は、マクロを実行した時点での作業ブックのファイルパスをグローバル変数に保存する例です。
vbnet
Copy code
Public gFilePath As String
Sub Macro1()
' ファイルパスを保存
gFilePath = ThisWorkbook.FullName
' ファイルを保存して閉じる
' ...
End Sub
Sub OpenWorkbook()
' 保存されたファイルパスを使用して作業ブックを開く
Workbooks.Open gFilePath
End Sub
この例では、gFilePath というグローバル変数にファイルパスを保存しています。その後、OpenWorkbook というサブルーチンを呼び出すことで、保存されたファイルパスを使用して作業ブックを開くことができます。
なお、グローバル変数を使用する場合は、変数のスコープに注意してください。グローバル変数は、どのモジュールからでもアクセス可能なため、不用意に変更すると思わぬバグを引き起こすことがあります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/20 14:46
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 2 2022/11/18 15:34
- Access(アクセス) エクセルのマクロについて教えてください。 2 2023/02/03 16:07
- Visual Basic(VBA) エクセルのマクロコードの一部分を変更する方法について教えてください。 2 2023/02/17 08:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
【Excel VBA】マクロでExcel自...
-
【Excel】マクロの保存先について
-
エクセル;相対パスを絶対パスへ...
-
エクセルVBAで作成した別ブック...
-
excelで直前に参照していたブッ...
-
複数のExcelファイルの印刷設定...
-
個人用マクロブックが消えました
-
ExcelVBAで困っています。
-
EXCELのボタンによるマクロの登...
-
エクセルでメッセージボックス...
-
エクセルVBA 個人用マクロブッ...
-
エクセルのvbaにて thisworkboo...
-
EXCELブックが勝手に開いて困っ...
-
エクセルで未保存に対するメッ...
-
エクセルを開いて文字を打つ際...
-
マクロの保存先、開いてるすべ...
-
複数のExcelブックから特定シー...
-
エクセルデータを別のエクセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで保存しないで閉じると空の...
-
エクセル関数>参照ファイル名...
-
マクロの保存先、開いてるすべ...
-
【Excel VBA】マクロでExcel自...
-
【Excel】マクロの保存先について
-
複数のExcelファイルの印刷設定...
-
エクセル;相対パスを絶対パスへ...
-
excelで直前に参照していたブッ...
-
EXcelのマクロで相対パスでファ...
-
エクセルVBAで作成した別ブック...
-
エクセルで未保存に対するメッ...
-
EXCELブックが勝手に開いて困っ...
-
EXCELのボタンによるマクロの登...
-
エクセルのvbaにて thisworkboo...
-
EXCELマクロで、開いてはいるが...
-
名前の変わるブックをアクティ...
-
[フィルターオプションの設定]...
-
エクセルVBA 個人用マクロブッ...
-
ファイル名変更後も、マクロを...
-
個人用マクロブックが消えました
おすすめ情報
回答ありがとうございます。
詳しく説明をしていただき感謝いたします、
教えて頂きました
vbnet
Copy code
Public gFilePath As String
のコードは私のマクロコードのどの部分に設定すれば良いですか。
マクロの順番として
①私のマクロ
②Sub Macro1()
③Sub OpenWorkbook()
を取りまとめたマクロを実行すれば上手く行くのでしょうか?
よろしくお願いいたします。
以前同じようマクロコード
Sub 行政報告2()
Application.ScreenUpdating = False
Dim folder As String
folder = "\\Nas-sp01\share\確認部\行政報告フォルダ\☆確認済交付月別物件(完了検査対象)\" & Worksheets("300").Range("A41").Text & " 【担当】確認番号 建物名称\" & Worksheets("300").Range("A43").Text & "\"
Dim initName As String
initName = folder & Worksheets("1").Range("X1").Value
newName = Application.GetSaveAsFilename(InitialFileName:=initName, FileFilter:="Excel マクロ有効ブック(*.xlsm), *.xlsm")
If newName = False Then Exit Sub
ThisWorkbook.SaveCopyAs newName
Workbooks.Open newName
Dim ws As Worksheet
Dim TargetCheck As String
Dim List As Variant
Dim i As Long
Dim Chk As Boolean
List = Array("休日", "受付", "管理表", "300")
For Each ws In Worksheets
Chk = False
If ws.Visible = False Then
For i = 0 To UBound(List)
If ws.Name = List(i) Then
Chk = True
Exit For
End If
Next i
If Chk = False Then
TargetCheck = TargetCheck & ws.Name & vbCrLf
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
End If
Next ws
ActiveWorkbook.Close SaveChanges:=True
Application.ScreenUpdating = True
End Sub
があり、このマクロを実行するとダイナログが開いて、保存することになってますが、新しいファイルも保存後、クローズし、作業中のブックも開いた状態でマクロが完了します。
このようには出来ないでしょうか?
フォルダ先とセル値にによるファイル名が設定されていますので、ダイナログが非表示でそのまま保存をしたいのですが。
色々申し訳ありません。よろしくお願いいたします。
回答ありがとうございます。
色々考えて頂きましてありがとうございます。
上記のマクロを「ThisWorkbook.Close」を削除したマクロで実行すると
作業ブックが指定フォルダ先に指定セル値をファイル名に、新しく保存したファイル名に変更されてます。
作業ブックを元々の名前に戻すことで解決できないでしょうか?
作業ブックの名前はシート名「青紙表」セル値「CE1」をファイル名としております。
マクロ有効形式「.xlsm」にて保存をしたいのですが可能でしょうか、
可能な場合、指定フォルダ先に指定セル値をファイル名に、新しく保存したファイル名も変更されてしまいますか?
ご指導をよろしくお願いいたします。