スポンサーリンク

Excel VBA(マクロ)ファイルを開いたままファイル名を変更する方法

The following two tabs change content below.

松井 元(まつい はじめ)

静岡県三島市の松井会計事務所に勤務する理系税理士。 文理両方のスキルの融合を考えており、このブログは以下を中心に更新している。
●税金・会計に関すること
●IT(Excel、VBAなど)を使った業務効率化
●自分のこと(考え、私生活)

さらに詳細なプロフィールはこちら
松井会計事務所へのお仕事ご依頼・お問い合わせはこちら
税金・会計の無料メルマガはじめます

Excel のファイルを開いて作業しつつ、ファイル名を変更したいときってありませんか?

ファイル名を変更するときって、とりあえず上書き保存してファイルを閉じてからファイル名を変更しますよね。

Image(28)

作業を継続するためには再度そのファイルを開く必要があります。

これを手動でやるとけっこう面倒なので、マクロを作ってみました。

ファイルを開いたまま名前を変更することができます。

スポンサーリンク

1、ファイルを開いたまま名前を変更する仕組み

さて、まずどのような仕組みにしたかお話ししますね。

「ファイルを開いたまま名前を変更」と書きましたが、厳密には素早くファイルを閉じて再度開いています。

マクロで自動化することで、開いたままとほぼ同じ状態を作り出したということですね。

ファイル名の変更は必ずファイルを閉じてから(あるいは閉じると同時に)でなければできません。

さて仕組みですが

マクロを実行すると次のように、現在のファイル名が入ったインプットボックスが出てきます。

(マクロはショートカットキーで実行すると良いでしょう。)

Image(29)

ファイル名って少しだけ変更したい場合が多いですよね。

今の「テスト.xlsm」というファイル名を頭に日付を付けて「19012 テスト.xlsm」と変更してみます。

変更して「OK」を選択すれば、それだけで見た目上はファイルが開いたままファイル名を変更できるようにしてあります。

この時、実際には以下の流れが高速で行われています。

・別名でファイルを保存して閉じる

・保存したファイル ↑ を開く

・元のファイルを削除する

2、ファイルを開いたまま名前を変更する VBA コード

さて、VBA コードを示します。

先にも書いたようにこのコードによるマクロばショートカットキーを設定して実行すると良いでしょう。

Excel で ショートカットキーを使ってマクロ(VBA)実行する方法、シートに最初からマクロを組み込んでおく方法
Excel シート上でのちょっとした操作を Excel VBA でプログラミングしてマクロを作り、ショートカットキーで実行できるようにしておくと便利です。 例えば ●セルの色を黄色く塗りつぶす ●ウインドウ枠を固定する など、頻繁に...

全 VBA コード

全 VBA コードは以下のようになります。

VBA コード説明

変数の定義

まずは変更の定義です。

ファイルのパス、元のファイルの名前、変更後のファイルの名前を文字列型で定義しています。

ファイルのパス、ファイル名の代入

次は変数にファイルのパスとファイル名を代入するところです。

ThisWorkbook.Path とは、この VBA コードが書かれたフォルダのパスです。

ファイル名が「テスト.xlsm」のファイルがデスクトップにあったとします。

Image(30)

ファイルのパスは以下のようになります。

「C:\Users\aaa\Desktop\テスト.xlsm」

この場合、ThisWorkbook.Path はファイル名よりも前の部分の

「C:\Users\aaa\Desktop」

になります。

これを変数 Cur_Path に代入します。

また ThisWorkbook.Name はファイル名になり、今回の場合

「テスト.xlsm」

になります。

これを変数  Cur_Name に代入します。

インプットボックスの表示とファイル名の変更

インプットボックスを表示すると同時に、現在のファイルの名前を表示させています。

「Prompt:=”ファイル名を入力して下さい。”」 とすることで、このメッセージがボックスに表示されます。

また、「Default:=Cur_Name」とすることで、ボックスが開いた状態で現在のファイル名が入っています。

今回は「テスト.xlsm」

Image(29)[1]

なぜこうしてあるかというとファイル名って少し変更したいだけの場合が多いからです。

日付を付けたり、「-2」「-3」のように番号をくっつけたり。

ボックスに希望するファイル名を入力して「OK」を押せば、変数 New_Name にそのファイル名が代入されます。

今回、元のファイルの頭に日付を付けて「190123 テスト.xlsm」としてみます。

Image(31)

これで、変数 New_Name に「190123 テスト.xlsm」という新しいファイル名が入りました。

「キャンセルボタン」または「×ボタン」を押した場合

先のインプットボックスで「キャンセルボタン」または「×ボタン」を押した場合、VBA コードを終了させます。

その場合、変数 New_Name には “”(空白)が入ることになります。

ファイルの別名保存して閉じて再度開く

さて、次はファイル名を別名で保存してから、再度開く処理を行っています。

SaveAs メソッドは、名前を付けて保存を行うメソッドです。

以下のように記述して使います。

オブジェクト.SaveAs ファイルのパス

今回は、新しいファイルのパス「Cur_Path & “\” & New_Name」を指定して保存します。

Workbooks.Open メソッドは、ファイルを開くメソッドです。

以下のように記述して使います。

Workbooks.Open ファイルのパス

今回は、新しいファイルのパス「Cur_Path & “\” & New_Name」を指定して開きます。

つまり、先に別名で保存したファイルをすぐに開くということですね。

元のファイルを削除する

最後に Kill 関数を使って、ファイル名を変更した場合に元のファイル「テスト.xlsm」を削除します。

(同じファイル名「テスト.xlsm」の場合は削除しません。)

Kill 関数は以下のように記述して使います。

Kill ファイルのパス

ファイルのパスは「Cur_Path & “\” & Cur_Name」

元のファイルのパスですね。

これによって変更前の元のファイルは削除されました。

ファイル名の変更

以上のコードを実行すると、ファイルを開いた状態で名前を変更したように見えます。

デスクトップ上に元のファイルを置いた状態で実行すると

Image(30)[1]

ファイルの名前が変わって同じくデスクトップ上に表示されます。

Image(32)

以下に動画も作成しましたので確認下さい。

マクロはショートカットキー「Ctro + Shift + A」で実行しています。

デスクトップの左側にあるファイルの名前が新しくなることを確認して下さい。

(ファイルは開いたままに見えます。)

3、まとめ

Excel VBA(マクロ)ファイルを開いたまま名前を変更する方法についてお話ししました。

手動でファイルを一度閉じてからファイル名を変更するよりは早いです。

頻繁に出番があるようなケースであれば、マクロとしてファイルに組み込んでおくと良いかと思います。

編集後記

昨日(1/22)は償却資産申告書の作成が中心でした。

また、夜には 1/28 に開催するセミナーの準備を行いました。

30代半ばから税理士になった体験談セミナーに向けて準備進めて行きます。