共有フォルダにあるいわゆる チルダドルファイル、エクセル書類が開いた時に一時的に出来るロックファイルが消せなくなった時の対処法。
1.症状
1.1.チルダドルファイルとは
ファイル共有フォルダにあるエクセル書類を開いている間、同じディレクトリに隠しファイルで、ロックファイル
~$(エクセル書類名)
が出来る。これの事を俗にチルダドルファイルと呼んでる人も居るみたい。これは不可視の隠しファイルで通常は見えないが、隠しファイルを見えるように設定していると見える。元のエクセル書類が閉じられると、自動的に消える。ちなみにWindowsServer2008R2マシンにはオフィスがインストールされていないので、元エクセル書類もチルダドルファイルも白紙アイコンの同じ拡張子を持ったバイナリファイルに見える。
1.2.読み取り専用でしか開けなくなってしまう
一般にチルダドルファイルが存在していると、誰かがそのエクセル書類を開いているという事なので、元のエクセル書類は扱えないのが筋です。そのため、通常、この状態で元ファイルを開こうとすると、読み取り専用でしか開けません。その際に、開いているホスト名と、そのユーザ名を表示されることがあるので、慌てずポップアップの情報は確認して控えておくべきです。
1.2.1.幸せな結末
誰が開きっぱなしになっているのかが分かれば、その人のPCへ出向き、閉じてもらえば、この問題の最も幸せな結末です。でも、この問題を検索する人は、そんなことくらい真っ先にやっている事でしょう。そのPCで書類を開いてなくても、不完全なプロセス終了によって、タスクマネージャーでエクセル関連プロセスをkillしてもらったり、場合によっては、そのPCを再起動、あるいは完全シャットダウンしてもらうオプションに考えがたどり着くのは簡単でしょう。
1.2.2.自分は開いてないのに自分が開いていると言われてしまう
圧倒的に、困っているのは、このケース。情報をネットに求めるのもここからだと思う。
その書類をダブルクリックで開こうとすると、
○○.xlsxは編集のため「△△」によってロックされています。
使用者は'ほかのユーザー'です
と表示されたと思う。「△△」はホスト名が表示されていたと記憶があるが、今思い返すと記憶があいまいで、ネット上にはそのようなキャプチャーがすぐには見つからない。記憶違いかもしれない。
で、ポイントは、ユーザー名が、ログインしたユーザ名ではなくなぜか「ほかのユーザー」になっている点。
この時点で、
1)エクセルが開いていたら全部閉じる
2)タスクマネージャーでエクセルっぽいプロセスがあったら全部killする
3)PCを再起動する
くらいは、誰に何も言われなくてもやると思う。
自分のPCをシャットダウンした状態で、サーバー上で
net session
コマンドを叩いて、セッションが残っていないか確認して、あればkillする(やり方忘れた)をするかも知れない。
だいたいそこまでやって、どうしようもなくなった状態でSOSとなると思う。
1.3.まとめると、
(隠しフォルダのチルダドルファイル)~$〔エクセル書類ファイル名〕.xlsx
(その元書類)〔エクセル書類ファイル名〕.xlsx
のペアが出来てしまう。
エクセル書類を開こうとすると、他で開いているからロックされているとポップアップが出て、読み取り専用でしか開けない⇒ファイル更新できない、別名保存しかできない
これらのファイルを消そうとしても、使用中なので消せない
2.解決編(解決してないかも)
2.1.関連付けられたハンドルを検索する方法(空振り)
定番の方法で、あと一つやってなかったのは、きちんとしたプロセス検索の方法。
ざっくりメモすると以下の通り。resmon.exeで起動するらしい。CPUタブを選んで、「関連付けられたハンドル」の検索ボックスに対象のファイルのパスを入れて検索。ヒットすればプロセス終了。
クライアントPC、サーバーとも、検索結果が出ませんでした。
2.2.ファイル強制削除ソフトをインストール(うまくいくものなし)
「削除ボタン」を押しても、ロックされてません、ってメッセージが出て、消してくれません。どんなの入れても(沢山あるのであまり試してませんが‥)。ロックしてないんなら消せよ、とか思うけど‥。
2.3.tmpファイルを消す方法(やらなかった)
によれば、tmpファイルを消す方法が古からあったらしい。見つかったのが後からなのでやらなかった。そもそも、該当のPCを完全シャットダウンした状態でも消せてないので、あまり期待はできませんが、こんど似たようなことがあったら試してみよう。
この方法は、
C:\Users\<ユーザ名>\AppData\Local\Temp
の中身を消去する方法でしたが、似たような方法に
の中身をクリアする方法もあります。これはやってみましたが
うまくいきませんでした。
あと、エクセルのコマンドで、「読み取り専用の設定/解除」と
いうものをリボンに登録して使う方法もあるみたいですが、
うまくいきませんでした。
2.4.再起動(サーバを再起動したら負けた気になる‥)
クライアントPCで出来ることはやりつくして、
しかもそのPCは完全シャットダウンしておいた状態で、
サーバー上でも同様のセッション確認、ハンドル確認しても
空振りに終わったら、いよいよこの物語も終盤に差し掛かってきた
感じがします。
自分が知らないだけなんだろうけど、Windows10 の情報は割と
あるのに、Windows Server OSの情報は、検索にヒットしない。
そもそも、サーバー機を導入するのって、再起動とか頻繁にしないで
管理できるからなんじゃないのかね。ぶつぶつ言ってても仕方がない。
これを実行するのは、技術的な問題よりも、対人的なスキルが要求
される‥
2・4・1.再起動後は‥
当該フォルダを見ても、一見何も変わってないように見える。
元エクセルファイルはともかく、
チルダドルファイルも(不可視属性ではあるものの)そのまま残っているし‥
2.4.1.1.元エクセルファイルを開く
で、元エクセルファイルを、別クライアントからダブルクリックで開くと
エラーポップアップなく普通に開きました。
編集後の保存も可能です。
但し、閉じても、残っているチルダドルファイルは消えませんでした。
2.4.1.2.チルダドルファイルは
で、そのチルダドルファイルですが、隠しファイルも表示されるモードで不通に削除されてしまいました。
再起動前と何が違ったのか今となっては謎なので、再起動せずにこの状態へ持ってこれるかどうか今後も気にしてはいこうと思います。