アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルvbaで、開いているファイルをリネーム保存することは可能なのでしょうか?
リネームは、名前の書き換えという意味で、名前を付けて保存ではないです。

検索してみましたが、なかなか該当するものが見つけられません。

やりたいことは、フォルダ内にファイルは1つしか存在せず、セルA1に値が入力されると、その値でファイル名が随時変更されるようにしたいのですが、その他、どのようなvbaが可能でしょうか?

エクセルvba、初心者です。
ネット検索で、必要なvbaを持ってきて使う程度のことしかできないので、自分で組み立てるレベルではありません。
できれば、キーワードではなく、できるだけ書いてくださると助かります。
バージョンは2003です。

どうぞ、お分かりになる方、教えてください。
よろしくお願いいたします。

A 回答 (2件)

#1さんの言うとおり、開いたままではリネームできません。



ただし、開いているファイルをいったん別名で保存(終了せずに)すれば、ロックははずれますからリネームできます。

ただ何のためにリネームしたいのか、開いているファイルはどうするのか(保存する?)など、
目的が分からないので、具体的なことを書くのはやめておきます。
    • good
    • 0
この回答へのお礼

nag0720さまや、asciizさまのご回答を拝見し、やり方を考え直すことにしました。

今度質問するときは、もう少し具体的に記載したいと思います。

ありがとうございます。

お礼日時:2013/01/23 13:38

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点のようなことが起こっては非常に混乱しますので、わざわざファイルロックをかけて、不正な操作をされないように保護しているのです。
    • good
    • 1
この回答へのお礼

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

お礼日時:2013/01/23 13:37

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

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


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