次の方法で共有

マクロでのファイル保存時に一時ファイルが削除されない

Anonymous
2016-10-12T08:46:26+00:00

Excelのマクロにて、次の①~④を繰り返す処理を行っています。

①テンプレートファイル(AAA.xltx)を開く

②編集

③必要があればフォルダを作成

④名前を付けて保存

On Error GoTo を追加していますが、処理は中断することなく正常終了します。

しかし、4割くらいの確率で一時ファイル(英数字、拡張子なし)が削除されずに残存しています。

特に、マクロ稼働中にIEで動くアプリケーションを操作したり、放置してスリープしたり

した場合に事象が発生します。

正規のファイル名で保存されたものと同内容(バイナリコンペアで一致)かつ、

正規のファイル名のタイムスタンプのほうが新しいです。

そのため、一時ファイルを削除すれば問題ないようにもみえます。

・一時ファイルが残存するのはなぜでしょうか?

・残存させない方法はありますか?

・このような事象が発生した場合に、マクロで検知して処理を中断する方法はありますか?

環境はWindows7、Office2010です。

ウイルスバスターがインストールされていますが、ウイルスバスターとの兼ね合いで残存する中間ファイルは

拡張子.tmpがついているようなので、別事象ではないかと考えています。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2016-11-04T00:51:50+00:00

    期間が開いてしまい申し訳ありません。

    ウイルスバスターに問い合わせたところ

    Solution ID 1311641 「Microsoft Excel (エクセル) 使用時にファイルの保存ができない。

    または拡張子”tmp”のファイルが作成され削除できない。 」

    と同一事象である旨が回答されました。

    拡張子の有無で、異なる事象かとかんがえていたんですが、同じもののようです。

    確かにシマンテックのインストール環境で確認したところ、事象は発生しませんでした。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Makapu 92,110 評価のポイント ボランティア モデレーター
    2016-10-14T06:55:31+00:00

    mori_kuni さん、こんにちは。

    ご返信ありがとうございます。

    「乱数16ケタのファイル」で拡張子がないファイルについての詳しいご説明

    ありがとうございました。

    二つ同時に一時ファイルが出来るという事ですね。(拡張子が.tmpのファイルと拡張子がないファイル)

    それについての情報を今の所持ち合わせておらず、すみません。。。

    Killを使っての一時ファイルの削除は最後の手段だとお考えなのですね。

    念の為、セキュリティソフトを起動しない状態で実行した場合はどうか、

    他の常駐アプリケーションが干渉していないか<**クリーンブート**>で実行した場合はどうかも

    お確かめになってはいかがでしょう。

    可能であれば、マシンスペックが高いPCで動かすとどうかなども

    確認されると良いのかなと思いました。

    また、もしよろしければ、

    MsdnフォーラムにVBA専用のフォーラムがありますので、こちらに投稿して

    良い案が無いか更に情報を集めてみてはいかがでしょう。

    <**Msdnフォーラム(VBA)** >

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2016-10-14T05:35:56+00:00

    Makapu様返信ありがとうございます。

    一時ファイルについては、拡張子がないことは確認済みです。

    拡張子表示状態でファイルを取り扱っております。

    マクロ実行中にF5を連打して出力フォルダを確認すると

    「乱数16ケタのファイル」と「.tmp拡張子のファイル」の2ファイルが表示される

    瞬間があります。

    killステートメント等での強制削除は最後の手段と考えています。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Makapu 92,110 評価のポイント ボランティア モデレーター
    2016-10-13T16:41:10+00:00

    こんばんは。

    こちらが参考になるでしょうか。

    ◆エクセル保存終了で一時ファイルが残ってしまう。

    Killステートメントで一時ファイルを削除するような処理を行うと良さそうですね。

    >・このような事象が発生した場合に、マクロで検知して処理を中断する方法はありますか?

    マクロの最終処理で一時ファイルがあればKillで削除するという処理を施せば

    途中で中断する必要はないと思います。

    こちらも併せてご確認されると良いと思います。

    Excel のファイル保存方法について

    Windows 7 の Excel で、共有フォルダのファイルを編集し、上書き保存すると、元の Excel ファイルが削除され、TMP ファイルが残る

    (共有フォルダでの件ではありますすが、一時ファイルについて参考になる事が書いてあります。)

    発生要因としては、セキュリティソフトやメモリ不足などによって

    一時ファイルを削除出来ない場合があるようですね。

    比較的大きなファイルで一時ファイルが残る現象がある事から、

    今回のケースも裏でアプリが起動している時に発生する事が多いとの事ですので

    メモリ不足が考えられるのかな?と思いました。

    Killで削除する方法の他には

    「・Excel が新しいファイルを初めて保存する場合、一時ファイルは作成されません。 」

    ともありますので、一時ファイルを発生させない様に、上書き保存ではなく

    Excelファイルを新規に保存→既存ファイルがあれば削除→ファイル名を変更

    と、VBAで制御すれば一時ファイルは発生しなそうですね。(未検証)

    ただ、気になったりましたのは、本当に拡張子が無いのかという事です。

    調べた範囲では、古いバージョンのExcelの場合は拡張子が付かないという情報を見ましたが、

    他は一時ファイルであれば、拡張子「.tmp」が付く様ですなのですが。。。

    以下の方法で拡張子を表示させる設定にしても、やはり表示されないでしょうか?

    Windows 7で、ファイルの拡張子を表示する方法

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません