
下記のマクロを実行すると
指定フォルダ内に指定シートと指定セル値をファイル名として、保存され、マクロ設定ブックはそのままの状態ですが、
このマクロを、
マクロを実行した時に
指定フォルダ内に指定シートと指定セル値をファイル名として、
作業ブックに上書き保存され、ブックをクローズできるように変更する方法を教えてください。
よろしくお願いいたします。
現状のマクロ
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
以上となります。
よろしくお願いいたします。
No.3
- 回答日時:
>指定フォルダ内に指定シートと指定セル値をファイル名として、
作業ブックに上書き保存され、ブックをクローズできるように変更する方法を教えてください。
掲示コードは
ブック名を 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
No.2
- 回答日時:
>元のファイル「2025省エネ・構造資料(2月17日).xlsm 」
に「「2025省エネ・構造資料(2月18日).xlsm 」と上書き保存されるようにしたい
この場合、ファイル名が変わるので上書き保存とは言いません。
2/18になれば、新規保存扱いになり、別名保存(2/17は残ったまま)となります。
ログ的に日付ごとにファイルを保存するというのでなく、常に最後に使用したファイルのみ残すというのであれば、通常保存(上書き保存)した上でFSOでファイル名を指定のファイル名に変更し、ファイルを閉じる という流れにした方がいいかなと思います。(ファイル名が変わっていようがいまいがこの動作をするので判別式は不要かと思います。)
あと、やることが「セルの値にファイル名を変更する」だけ(他のシーケンスは絡まない)の処理ならVBSでやった方が簡単だと思うのですが
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
vbaマクロについて
Visual Basic(VBA)
-
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
Excelのマクロについて教えてください。
Visual Basic(VBA)
-
-
4
Excelの数式について教えてください。
Excel(エクセル)
-
5
【マクロ】開いているブックの名前を取得した後、名前をセルに1つづつ入力するには?
Visual Basic(VBA)
-
6
エクセルについて教えてください
Excel(エクセル)
-
7
エクセルの改行について
Visual Basic(VBA)
-
8
エクセルのマクロについて教えてください。
Visual Basic(VBA)
-
9
算術演算子「¥」の意味について
Visual Basic(VBA)
-
10
Excelの条件付書式について教えてください。
Excel(エクセル)
-
11
Excelで作成した出欠表から日付ごとの欠席者を書き出す方法について教えてください。
Excel(エクセル)
-
12
ダブルクリックで貼り付けた画像からリンクのみ削除し、画像を残したい。
Visual Basic(VBA)
-
13
VBAの質問(Msgboxについて)です
Visual Basic(VBA)
-
14
エクセルVBA 段落番号自動取得方法
Visual Basic(VBA)
-
15
Excelマクロで使うVBAコードをスプレッドシートのGoogle Apps Scriptに変換
Visual Basic(VBA)
-
16
(EXCEL超初心者)EXCELの関数(またはマクロ)で質問です。
Visual Basic(VBA)
-
17
【マクロ】変数を使った、文字の種類の変更にて、エラーとなる。
Visual Basic(VBA)
-
18
vbsでのwebフォームへの入力制限?
Visual Basic(VBA)
-
19
Vba Array関数について教えてください
Visual Basic(VBA)
-
20
エクセルVBAで在庫の組み換え処理をしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
VBAから書き込んだ条件付き初期...
-
WindowsのOutlook を VBA から...
-
マクロの記録を使用したマクロ...
-
vbsでのwebフォームへの入力制限?
-
ダブルクリックで貼り付けた画...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
vbs ブック共有を解除
-
VBAでFOR NEXT分を Application...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
[Excel VBA]特定の条件で文字を...
-
【VBA】値を変更しながら連続で...
-
vba textboxへの入力について教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
vba textboxへの入力について教...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
Vba Array関数について教えてく...
-
Vba セルの4辺について罫線が有...
-
【マクロ】開いているブックの...
-
複数のExcelファイルをマージす...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【ExcelVBA】5万行以上のデー...
-
vbsでのwebフォームへの入力制限?
-
[VB.net] ボタン(Flat)のEnable...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】値を変更しながら...
-
改行文字「vbCrLf」とは
-
算術演算子「¥」の意味について
-
VBAでセルの書式を変えずに文字...
-
VBAの「To」という語句について
-
VB.net 文字列から日付型へ変更...
おすすめ情報
現在のファイル名が「2025省エネ・構造資料(2月17日).xlsm 」となっております。
日々、このファイルを更新し、更新した日付がファイル名になるように設定をしたいのです。
たまに、同じ日に更新をすることもある為、
「2025省エネ・構造資料(2月17日).xlsm 」に上書き保存になったり
次の日に更新した場合は、
指定セルが「2025省エネ・構造資料(2月18日) 」となってますので
元のファイル「2025省エネ・構造資料(2月17日).xlsm 」
に「「2025省エネ・構造資料(2月18日).xlsm 」と上書き保存されるようにしたいのですが、
可能でしょうか。
よろしくお願いいたします。
回答ありがとうございます。
そうなんですね、
少し整理してみます。
又、後ほどご連絡させていただきます。