[[20250626102451]] 『ファイルの破棄の方法について』(かぼちゃ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『ファイルの破棄の方法について』(かぼちゃ)

以下のように作ってみました。
動作させるとオープンしたファイルが消えて、
見た目は正常かと思ったのですが、
編集画面のプロジェクトには
クローズしたはずのファイルが残ったままになります。
実行するたびに増え続けていきます。
何か間違っているのだろうけど間違いがわかりません。
間違っているところと修正方法を教えてください。

Private Sub CommandButton1_Click()

    Dim wb As Workbook, ws As Worksheet
    Dim varwork As Variant
    Dim arybook As ArrayList: Set arybook = New ArrayList

    For Each varwork In Array("Book1.xlsm", "Book2.xlsm", "Book3.xlsm")
        Set wb = Workbooks.Open(varwork): Set ws = wb.Worksheets("Sheet1")
        arybook.Add (Array(wb, ws))
    Next

    For Each varwork In arybook
        varwork(0).Close: Set varwork(1) = Nothing: Set varwork(0) = Nothing
    Next

End Sub

< 使用 Excel:Excel2016、使用 OS:Windows11 >


 たしかにそうなりますね。(当方Excel365,windows10)
 ただし通常のBookを要素とする配列だとそういう事象は発生しません。

 ArrayListがBookをつかんだままになっているとでもいったことなんでしょうか。 
 どなたか解明していただけるといいですね。

(xyz) 2025/06/26(木) 13:16:14


ArrayListがだめなら ご案内の様に、普通の配列だってあるし

Collection Dictionary SortedList

なんかがVBAから使えるそぉですよ。。。。(*^^*) 試してみようかな。 また暇な時ね^^;
m(__)m
(隠居Z) 2025/06/26(木) 17:50:05


 幽霊プロジェクト事象の一種なんでしょうね。

 こうした話は一般ユーザーには原因は分からないような気がします。 
 コードの問題じゃないような気がします。(もし原因が指摘されたら不明を恥じるばかりですが)
 製品そのものの動作なので、マクロソフト社でないとわからない気がします。
 そこまでの情報が開示されていないわけで。

 同社が運営する質問掲示板にでも尋ねてみてはいかがですか?
 # でも最近、「StackOverFlow(という有名質問掲示板)に投稿してみては」という回答があって驚きました。
 # 回答者は別にMS社の社員じゃないようですしね。
 # ユーザーが困っている点をMS社に連携して欲しいと思って投稿しているはずなんだが。
 # どうなってんだかねえ。

(xyz) 2025/06/26(木) 20:38:14


こんばんは ^^
(xyz)さんの仰せの通りかもしれませんね。
今、連想配列に置き換えて走らせてみましたら

Erase も nothing も Removeall も無しでも残骸は消えてくれましたですよ。(*^^*)
ご報告まで。
m(__)m 
(隠居Z) 2025/06/26(木) 21:24:54


 VBEウインドウを開いた状態で実行すると「幽霊プロジェクト」状態になるけど、
 VBEウインドウ閉じてマクロ実行ダイアログから実行する分には発生しないですね...

(白茶) 2025/06/26(木) 21:42:08


 私のところでは、ボタンに登録したマクロで実行しても「幽霊プロジェクト」になってしまいました。
 続けて実行したら、なんと「メモリ不足エラー」となりました。
 これ以上は(私には)危険ですし、私にはわかりそうもない(元々そう思っていました)ので、
 ここでリタイアさせていただきます。

 なお、ネットで「Excel 幽霊プロジェクト」と検索すると、結構類似例が散見されます。ご参考まで。

(xyz) 2025/06/26(木) 23:46:50


通常運行で使用するには
問題はないという認識でよいのでしょうか?

(かぼちゃ) 2025/06/30(月) 12:44:55


 通常運行ってなんですか?

 ArrayListを使う必要姓がわかってませんが、
 ArrayListの機能がどうしても必要なら、ある程度のリスクが想定されても使うしかありません
 ArrayListを使わなくてもよい別の方法があるならば、そちらを採用した方がよい

 ArrayListを使う必要姓の説明なしに、他人に最終判断を委ねるのはよくありません
(´・ω・`) 2025/06/30(月) 12:56:57

(´・ω・`)さんへ
 > VBEウインドウを開いた状態で実行すると「幽霊プロジェクト」状態になるけど、
 > VBEウインドウ閉じてマクロ実行ダイアログから実行する分には発生しないですね...
 > (白茶)
VBEウインドウ での動作がおかしいだけで
VBEウインドウ を使用しない状態で使用する分には問題がないのかと
(かぼちゃ) 2025/06/30(月) 15:38:31

 >VBEウインドウ を使用しない状態で使用する分には問題がないのかと

 そう自分で考えるなら、それでいいと思います
 他人に保証を求めないで、自己責任でどうぞということです
(´・ω・`) 2025/06/30(月) 15:54:58

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.