• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:開いているファイルをリネームする方法 vba)

開いているファイルをリネームする方法 vba

このQ&Aのポイント
  • エクセルVBAで開いているファイルをリネーム保存する方法について教えてください。
  • フォルダ内に1つしか存在しないファイルの名前を、セルA1に入力された値で随時変更するエクセルVBAのコードについて教えてください。
  • バージョン2003のエクセルで、開いているファイルをリネーム保存する方法について詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

#1さんの言うとおり、開いたままではリネームできません。 ただし、開いているファイルをいったん別名で保存(終了せずに)すれば、ロックははずれますからリネームできます。 ただ何のためにリネームしたいのか、開いているファイルはどうするのか(保存する?)など、 目的が分からないので、具体的なことを書くのはやめておきます。

yamayama456
質問者

お礼

nag0720さまや、asciizさまのご回答を拝見し、やり方を考え直すことにしました。 今度質問するときは、もう少し具体的に記載したいと思います。 ありがとうございます。

その他の回答 (1)

  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.1

Excelがオープン中のファイルは、Excel自身でファイルシステムの保護機能を使ってロックされていますので、VBAでリネームすることは不可能です。 手動でも確認できます。 任意のexcelファイルを開き、開いたままファイル名を変えようとしてみてください。 『Windows OS』から、「ファイルは使用中です」と怒られます。 つまりExcel自身だけでなく、他のプログラムや操作等からも、保護されているのです。 そんなことが簡単にできてしまっては、マルチタスクのOSにおいてファイルの正確性を保てなくなり、致命的なエラーが発生する可能性を生じさせてしまうことになるから、わざわざExcelは開くファイルを保護しているんです。 これを迂回する方法は有りません。 自分自身ではないファイルなど、ロックのかかってない他のファイルなら、作成・リネーム・削除可能ですので、そういった手段で実現することを考えましょう。 ---- ちなみにファイルロックに全然気を使っていないプログラムなどもあります。 例えば「メモ帳」。 a.txt を作成して開き、「aaa」と書き。 もう一度a.txt をダブルクリックして「bbb」と書く。 この時点で2つのメモ帳が起動していますが、保存されるのは、最後に保存された物のみ、です。 内容が混じったりはしません。 1番目→2番目と保存・終了すると、ファイル内容は「bbb」となり、 2番目→1番目と保存・終了すると、ファイル内容は「aaa」となります。 今度はまた、a.txtを開きます。 開いたまま、a.txt をc.txt とリネームし。 c.txt を開いて、「ccc」と書き、保存。 そして開いていたa.txt を保存すると、c.txt とは別にa.txt が出来ます。 なお、明示保存せずに終了すると、a.txtは無くなります。 …まともなアプリケーションでは、上記2点のようなことが起こっては非常に混乱しますので、わざわざファイルロックをかけて、不正な操作をされないように保護しているのです。

yamayama456
質問者

お礼

なるほど、よくわかりました。 ありがとうございます。

関連するQ&A