重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

下記のマクロを実行すると
指定フォルダ内に指定シートと指定セル値をファイル名として、保存され、マクロ設定ブックはそのままの状態ですが、
このマクロを、
マクロを実行した時に
指定フォルダ内に指定シートと指定セル値をファイル名として、
作業ブックに上書き保存され、ブックをクローズできるように変更する方法を教えてください。
よろしくお願いいたします。
現状のマクロ
Sub Macro1()
Const fol As String = "\\nas-sp01\share\確認部\■意匠\戸建\戸建て電子申請関連\ひな形\"
Dim fname As String, fPath As String
Dim exte As String
fname = Worksheets("省エネチェック").Range("W1").Text
exte = ".xltm"
fPath = fol & fname & exte
ThisWorkbook.SaveAs Filename:=fPath, FileFormat:=xlOpenXMLTemplateMacroEnabled
End Sub
以上となります。
よろしくお願いいたします。

質問者からの補足コメント

  • うーん・・・

    現在のファイル名が「2025省エネ・構造資料(2月17日).xlsm 」となっております。
    日々、このファイルを更新し、更新した日付がファイル名になるように設定をしたいのです。
    たまに、同じ日に更新をすることもある為、
    「2025省エネ・構造資料(2月17日).xlsm 」に上書き保存になったり
    次の日に更新した場合は、
    指定セルが「2025省エネ・構造資料(2月18日) 」となってますので
    元のファイル「2025省エネ・構造資料(2月17日).xlsm 」
    に「「2025省エネ・構造資料(2月18日).xlsm 」と上書き保存されるようにしたいのですが、
    可能でしょうか。
    よろしくお願いいたします。

      補足日時:2025/02/17 13:12
  • 回答ありがとうございます。
    そうなんですね、
    少し整理してみます。
    又、後ほどご連絡させていただきます。

    No.2の回答に寄せられた補足コメントです。 補足日時:2025/02/17 14:20

A 回答 (4件)

#3 ミスりました


同名条件を設定してください
Kill oldFile '元ファイルを削除しています
を下記に訂正してください

If oldFile <> fPath Then Kill oldFile '元ファイルを削除しています
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
全て上手く行きました。
何時も詳しいコード共に教えていただきまして
感謝いたします。

お礼日時:2025/02/17 15:01

>指定フォルダ内に指定シートと指定セル値をファイル名として、


作業ブックに上書き保存され、ブックをクローズできるように変更する方法を教えてください。
掲示コードは
ブック名を Worksheets("省エネチェック").Range("W1").Text としていますが
>元のファイル「2025省エネ・構造資料(2月17日).xlsm 」
に「「2025省エネ・構造資料(2月18日).xlsm 」と上書き保存されるようにしたい
という事は()内の文字列を入れ替えれば出来るのではないでしょうか
文字列変更も参考として書くと

W1が2月18日として
Dim oldName As String, newName As String
Dim oldTxt As String, newTxt As String
Dim sbS As Long, sbE As Long
oldName = ActiveWorkbook.Name
newTxt = Sheets("省エネチェック").Range("W1").Text
sbS = InStr(oldName, "(")
sbE = InStr(oldName, ")")
If sbS > 0 And sbE > 0 And sbS < sbE Then
oldTxt = Mid(oldName, sbS + 1, sbE - sbS - 1)
End If
newName = Replace(oldName, oldTxt, newTxt)

いずれにしましてもブック名の問題なので良しなに

命名に禁則文字が無ければ(同名ブックがあっても上書き)保存できます

Application.DisplayAlerts = False
TargetBook.SaveAs Filename:=folPath & "\" & newName
Application.DisplayAlerts = True

また、フォルダパスは作業ブックが「2025省エネ・構造資料(2月17日).xlsm 」であるなら
folPath=ActiveWorkbook.Pathなどで取得できますね

ブックをクローズ・・・開いているブックが1つならExcel自体を閉じる必要があるので
If Workbooks.Count = 1 Then Application.Quit

同名があったら上書き
無ければ変更内容を新しいブック名で保存し
元ブックを削除 と解釈すると下記の様な処理になります

Sub test()
Dim oldFile As String
Dim fol As String
Dim fname As String, fPath As String
Dim exte As String '拡張子
Dim wb As Workbook
Set wb = ActiveWorkbook '作業ブック
oldFile = wb.FullName
fol = wb.Path
'指定セルが「2025省エネ・構造資料(2月18日)
fname = Worksheets("省エネチェック").Range("W1").Text
exte = ".xlsm"
fPath = fol & "\" & fname & exte
'同名ブックがある場合でも上書き
Application.DisplayAlerts = False
wb.SaveAs Filename:=fPath, FileFormat:=52 'マクロ有効ブック
Kill oldFile '元ファイルを削除しています
Application.DisplayAlerts = True
If Workbooks.Count = 1 Then Application.Quit 'EXCEL自体を終了する場合
wb.Close
Set wb = Nothing
End Sub
    • good
    • 0

>元のファイル「2025省エネ・構造資料(2月17日).xlsm 」


に「「2025省エネ・構造資料(2月18日).xlsm 」と上書き保存されるようにしたい

この場合、ファイル名が変わるので上書き保存とは言いません。
2/18になれば、新規保存扱いになり、別名保存(2/17は残ったまま)となります。

ログ的に日付ごとにファイルを保存するというのでなく、常に最後に使用したファイルのみ残すというのであれば、通常保存(上書き保存)した上でFSOでファイル名を指定のファイル名に変更し、ファイルを閉じる という流れにした方がいいかなと思います。(ファイル名が変わっていようがいまいがこの動作をするので判別式は不要かと思います。)

あと、やることが「セルの値にファイル名を変更する」だけ(他のシーケンスは絡まない)の処理ならVBSでやった方が簡単だと思うのですが
この回答への補足あり
    • good
    • 0

「Excelのマクロについて教えてください」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2025/02/17 14:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A