- ベストアンサー
エクセル保存終了後に残る一時ファイルの自動削除について
- エクセル保存終了後に残る一時ファイルの問題に悩んでいます。特に職場での利用時に頻繁に発生します。一時ファイルの原因はファイルが1M以上あり、保存に時間がかかることです。時間がかかっている最中に何度か終了処理をしてしまい、一時ファイルが残ってしまいます。
- 一時ファイルが残ってしまうことは混乱を招きますし、手動で削除する手間もかかります。そこで、VBAや他の方法で一時ファイルを自動的に削除する方法について情報を求めています。職場で使用しているExcelのバージョンは2003で、自宅では2002を使用しています。
- 一時ファイルの自動削除ができれば、作業効率の向上につながると考えています。職場での利用は不特定多数の人が行うため、重複して終了処理を行い、一時ファイルが残ってしまう問題は深刻です。解決策や有効な方法があれば、教えていただけると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>..保存に時間がかかります。砂時計表示中に再度、終了操作をしてしまい、 >重複して終了処理させてしまう.. この認識には少し疑問があります。保存処理中にはユーザー操作は受け付けてくれないはず。 それに、一時ファイルではありますが、実際に変更が反映されているのはこのファイルです。 『Excel のファイル保存方法について』 http://support.microsoft.com/kb/814068/ja その一時ファイルが残る状況の時、何かエラーメッセージが出てないのでしょうか。 発生直後に居合わせる事ができたら、 元ファイルに変更が反映しているか確認してみたほうが良いと思います。 #古いファイルは削除してしまって構わないとは思いますが。 参考。 『ネットワーク ドライブにファイルを保存する際に "変更を保存できませんでした" というエラー メッセージが表示される』 http://support.microsoft.com/kb/813973/ja 削除権限が無いユーザーの利用時に発生しているのかもしれません。 もしくはウイルス対策ソフトの影響だったり。
その他の回答 (1)
- nicotinism
- ベストアンサー率70% (1019/1452)
>拡張子なし英数字名の一時ファイルの有るフォルダはどうなんでしょうね? フォルダ名は一定で、かつ、フォルダの中のファイルは全て削除しても問題ないなら Kill ステートメントはワイルドカードが使えますので kill \\server\are\*.* で消せないかな? 拡張子が無いファイルを全て消してよいなら、getextensionnameは拡張子が分からなければ ""(長さ0の文字列が返される)のでこれを元にKillしてみては? Sub test() Const trgDir = "C:\" '適宜変更を Dim trgFile As String Dim objFS As Object Set objFS = CreateObject("Scripting.FileSystemObject") trgFile = Dir(trgDir, vbNormal) Do While trgFile <> "" Debug.Print trgFile & "→" & objFS.getextensionname(trgFile) trgFile = Dir Loop End Sub ファイルが使用中の場合には当然エラーが発生しますので、On Error ステートメントで調整してください。 これを適当なイベントから呼び出せばよろしいかと。 末尾ながら、一時ファイルを消して対処するのは『臭い物にフタ』のようで・・・。 一時ファイルが出来ない仕組みが出来るといいですね。 追伸 サーバー上のファイルは通常の場合、消すと元に戻せませんのでバックアップは取ってから。 もしくは適当な試験フォルダ・ファイルを作ってからにしてください。
お礼
早速のご返事ありがとうございます。 そうですね。他に妙案がない時は、getextensionnameで拡張子がないファイルを探す方法を参考にさせて頂きたく思います。 この回答を読んだ後に、ふっと思ったのですが、 プログラムファイル(.xls)格納フォルダーに一時ファイルが生成されるのがネックですね。 ツール(T)→オプション(O)→全般に、カレントフォルダ名(D)がありますが、ここは参照されていませんね。 起動フォルダに一時ファイルが作られる様ですね。 一時ファイルが、指定した作業ファイルに作られる様に設定出来れば、少しは気が楽になるのですが、模索しています。
お礼
回答を頂いた日にお礼のご返事をしましたが、どうも登録ミスがあった様なので再投稿します。 色々貴重な情報をありがとうございます。 >..保存に時間がかかります。砂時計表示中に再度、終了操作をしてしまい、 >重複して終了処理させてしまう.. ↓の様になります。 (1)終了保存操作(Xボタン押す、保存Yes)すると、砂時計が表示されます。 この間は、当然ながらマウス入力は効きません。 保存で10秒以上かかります。 (2)この砂時計表示の時には、カレントフォルダに一時ファイルが生成されます。 (3)砂時計が消えた直後に、再度、終了のXボタン操作すると、 砂時計が再表示されて、「この要求は受け付けられませんでした」のメッセージが 表示されます。(一瞬、VBAで作成したフォーム部分が真っ白になります) (4)砂時計は消えますが、一時ファイルが残ったままになります。 (5)「エラーを送信しますか」のメッセージが表示されます。 >削除権限が無いユーザーの利用時に発生しているのかもしれません。 >もしくはウイルス対策ソフトの影響だったり。 職場PCに業務用として、このVBA付きエクセルシートを入れたのが8年程前です。 職場PCにウィルスバスタが導入されたのが、5年程前。(自宅PCも同様) バスター導入後かとも感じています。 職場及び自宅PCの主メモリは256MBです。 ウィルスバスタ2009を自宅で導入する時に、「メモリが足りません。続けますか」みたいなメッセージはありました。 他に、VBAでセルデータのシートコピーすると、一部コピーが出来ない事があります。(現象は一定) これはコピーの順番を変えると出来たりする場合があります。 メモリが足りないのも原因の一つでしょうね。 とりあえずステタスバーに保存中メッセージを表示させて、この間のマウス操作をしない様にと喚起しようかと思っています。