エクセル マクロについてテンプレート保存したブックに必要なデーターを追加し再度テンプレート保存し、そのまま作業を行いたいんですが、この時点での拡張子はxltmになってしまい上書き出来る為、人為的なミスでせっかくテンプレート保存したブックに変更してしまう事例が多発し困ってます。下記の流れをマクロで組みたいのですがご教示お願いします。流れTEST250925.xlsmをTEST251118.xltmでテンプレート保存 →必要な非表示のsheetを再表示し、任意のフォルダ(途中まで指定)に別名(セルから取得)○○○○.xlsbで保存

1件の回答

回答を書く

1104794

2026-06-04 02:35

+ フォロー

要件が違っていたので回答しなおします。



昨日返信頂いた要件です。

------------------------------------

例えば

① テンプレから開いた「台帳.xlsm」をsheet1のセルA1から取得した名前(日にち)「台帳台帳251120.xltm」を同じフォルダにテンプレ保存

② 「台帳251120.xltm」がテンプレート保存完了後 そのまま開いたままで誤操作できないように非表示にしておいたシートを再表示

③ 台帳251120.xltm→○○台帳251120.xlsm(xlsb)」で別フォルダに保存(保存ダイアログボックスが表示されればOK)

出来れば①②③と一緒にできれば最高ですが 単独で①と②③は1つのマクロで出来ないでしょうか?

尚、②のマクロは構築済です。

------------------------------------



保存をボタンから行うようにしました。

そのボタンに書くコードです。

「台帳yymmdd.xltm」を保存するフォルダを

Const fpath As String = \u0026quot;C:\\work\\\u0026quot;

に書いて下さい。最後に \\ を忘れずに。



Sub test()

Const fpath As String = \u0026quot;C:\\work\\\u0026quot;

Dim fname As Variant

Dim ans As Long

fname = fpath \u0026amp; \u0026quot;台帳\u0026quot; \u0026amp; Format(Worksheets(\u0026quot;Sheet1\u0026quot;).Range(\u0026quot;A1\u0026quot;).Value, \u0026quot;yymmdd\u0026quot;) \u0026amp; \u0026quot;.xltm\u0026quot;

If Dir(fname) = \u0026quot;\u0026quot; Then

ans = MsgBox(fname \u0026amp; \u0026quot;で保存します。いいですか?\u0026quot;, vbYesNo + vbQuestion, \u0026quot;確認\u0026quot;)

If ans = vbYes Then

Application.EnableEvents = False

ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlOpenXMLTemplateMacroEnabled

Application.EnableEvents = True

Else

Exit Sub

End If

Else

ans = MsgBox(fname \u0026amp; \u0026quot;は存在します。上書きしていいですか?\u0026quot;, vbYesNo + vbQuestion, \u0026quot;確認\u0026quot;)

If ans = vbYes Then

Application.DisplayAlerts = False

Application.EnableEvents = False

ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlOpenXMLTemplateMacroEnabled

Application.EnableEvents = True

Application.DisplayAlerts = True

Else

fname = Application.GetSaveAsFilename(FileFilter:=\u0026quot;Excelファイル,*.xl*\u0026quot;)

If fname = False Then

Exit Sub

Else

Application.EnableEvents = False

If Right(fname, 4) = \u0026quot;xltm\u0026quot; Then

ActiveWorkbook.SaveAs fname, FileFormat:=xlOpenXMLTemplateMacroEnabled

Else

ActiveWorkbook.SaveAs fname, FileFormat:=xlOpenXMLWorkbookMacroEnabled

End If

Application.DisplayAlerts = True

End If

End If

End If

End Sub



アイコンの保存などから勝手に保存しないように

ThisWorkbook に下記を記載して下さい。



Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

MsgBox \u0026quot;保存ボタンから実行して下さい\u0026quot;

Cancel = True

End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有