
こんにちは
ExcelVBAでワークブックの名前を別のワークブックを作成して名前を変える方法ではなく、
そのままで名前のみ変える方法などはないでしょか?
よくExcelVBAで「ワークブックの名前を変える方法」などと検索しても、以下のような名前を変えたワークブックを作成するというようなプロシージャしか出てきません。
Sub ブックの名まえを変える
ActiveWorkbook.SaveAs FileName:="新しいワークブック.xlsm"
End Sub
しかし、このような方法では既存のワークブックを削除する手間が生じて面倒です。
上記のプロシージャでなく、新規のブックを作成せずに済むプロシージャを知りたいです。
イメージとしてはシートの名前を変える際に使うプロシージャみたいな感じです。
Sub シートの名前を変える
WorkSheets("シート").Name="新しいシート"
End Sub
教えていただけたらありがたいです。
No.1ベストアンサー
- 回答日時:
こんにちは
思っていらっしゃるほどには簡単でないかも知れませんが・・・
FileSystemObjectなどを利用することで、ご質問のような処理が実現可能と思います。
例として、以下の解説の中ほどに似たような記述法が紹介されています。
http://www.officetanaka.net/excel/vba/tips/tips9 …
回答ありがとうございます。
教えていただいたサイト、大変参考になりました。
閉じているブックだとこんな簡単にブックの名前を変えるとこができるのですね。
感動いたしました。
ただ、やはりアクティブのワークブックだと名前を変えるのがかなり難しいみたいですね。
No.4
- 回答日時:
必要性は認めるけれども、いままで、そういうことは考えたことがありませんでしたね。
排他的制御が働くから変更できないのです。ただ、面白そうなので、やってみました。ただ、画面がかなり動くのが問題ですね。もう少しきれいに動けばよいのですが。
個人用マクロブックか、アドインの標準モジュールにしてください。
'//
Sub RenameExecl()
Dim objFS As Object
Dim Wb As Workbook
Dim sh As Worksheet
Dim shName As String
Dim winSt As Long
Dim BaseName As String
Dim FPath As String
Dim fName As Variant
Dim objFile As Object
Dim ext As String
Set Wb = ActiveWorkbook
Set sh = ActiveSheet
shName = sh.Name
winSt = Wb.Windows(1).WindowState
BaseName = Mid(Wb.Name, 1, InStrRev(Wb.Name, ".") - 1)
ext = Replace(Wb.Name, BaseName, "")
FPath = Mid(Wb.FullName, 1, InStrRev(Wb.FullName, "\"))
If MsgBox(Wb.Name & "の名前の変更を行います " & vbCrLf & _
"拡張子の変更はできません ", vbOKCancel) = vbCancel Then
Exit Sub
End If
Set objFS = CreateObject("Scripting.FilesystemObject")
fName = Application.InputBox("名前の変更", "名称変更", BaseName)
If fName = False Then Exit Sub
If InStrRev(fName, ".") > 0 Then
fName = Mid(fName, 1, InStrRev(fName, "."))
End If
Application.EnableEvents = False
Wb.Close True
Set objFile = objFS.GetFile(FPath & BaseName & ext)
objFile.Name = fName & ext
Workbooks.Open FPath & fName & ext
ActiveWorkbook.Worksheets(shName).Select
ActiveWorkbook.Windows(1).WindowState = winSt
Application.EnableEvents = True
End Sub
'//
回答ありがとうございます。
以前の「ExcelVBAを武器に就活できるか?」に引き続きまたの回答ありがとうございます。
上記のプロシージャ、まだ僕には早いようです・・・
いつか理解できるときに参考にさせていただきます。
本当に詳細に回答していただいて感謝しかないです、ありがとうございます。
No.3
- 回答日時:
#1です。
#2様がご指摘のように、現在開いているファイルが対象の場合は、#1の方法は使えないはずですね。
(開いていないファイルと思い込んでしまっていました)
失礼いたしました。m(__)m

No.2
- 回答日時:
それは無理では?今開いているファイルハンドルをそのままでファイル名を変えると言う機能は、Excel自身にないし、他のソフトでもそれができるものはないでしょう。
いや、もっと根幹の話でOSのファイルシステムがそれを許せるのか?無理そうな予感しかしない…開いてないファイルなら、すでに紹介済みの方法でいけるんですけどね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 複数のブックをひとつのブック(複数のシートにまとめる)場合にシートとの順番について 5 2022/12/28 20:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/06/01 14:45
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 2 2022/11/18 15:34
- Excel(エクセル) シート名を簡単に書く方法があれば教えてください。 4 2023/08/24 12:40
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) ワイルドカード「*」を使うとうまくいかないマクロの添削をお願いします 3 2022/03/26 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) ブックのCOPY 4 2023/02/25 20:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでUserFormを起動し...
-
Accessのマクロでモジュールを...
-
イベントプロシージャが動作しない
-
Accessでのイベントプロシージャ
-
Accessでグローバル変数を宣言...
-
PL/SQLのエラーについて
-
OutlookVBAで作成したマクロに...
-
Excel VBAで「プログラム実行」...
-
ACCESS マクロをモジュールに変...
-
DB2でのストアドプロシージャの...
-
SQL-Server 6.5でストアドプロ...
-
excel/vba/public変数
-
vbaでブックを開いたときにコン...
-
【Excel VBA】 WorksheetやRa...
-
VBAでSplitエラーです
-
エクセルVBAの次のコードの...
-
ExcelVBAでしりとりのやり方を...
-
VBA 「文字が入っていたら、...
-
roleの権限確認方法
-
Oracle8iで順序の値のリセット
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
エクセルVBAでUserFormを起動し...
-
callで順に実行されるプロシー...
-
【Excel VBA】 WorksheetやRa...
-
Excel VBAで「プログラム実行」...
-
或るプロシージャの呼び出し元判定
-
OutlookVBAで作成したマクロに...
-
VBA プロシージャの名前の取得
-
Accessでグローバル変数を宣言...
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
excel/vba/public変数
-
エクセルVBAが対応できるプログ...
-
Excel:ThisWorkbookオブジェク...
-
ACCESS マクロをモジュールに変...
-
ACCESS2007インポート時の空白...
-
ブックオープン時にテキストボ...
-
PL/SQLのエラーについて
-
sp_executesqlを実行してもテー...
-
ExcelVBAでしりとりのやり方を...
おすすめ情報