Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Excel 2019)
閉じたブックのVBAプロジェクトが残ったままになってしまう
投稿日時: 24/09/05 16:59:49
投稿者: miyagi07

フォルダ内のExcelブックを1つ1つ開いてデータを集計するブックがあります。
ずっと問題なく動いていたのですが、2週間くらい前から集計の処理が終了したあと閉じたブックのVBAプロジェクトがVBEに残るようになってしまいました。そのためか処理の速度が以前より遅くなっているようです。
 
原因を調べるために新しいブックを作成し、集計対象のブックに対して「Workbooks.Open」「Workbooks.Close」だけを行うマクロを実行してみましたが、やはりVBAプロジェクトが残ってしまいます。
「Workbooks.Close」の後にWorkbookオブジェクトの解放を行ったり「DoEvents」を入れてみたりしてみましたが改善しませんでした。
 
集計対象ではない別のブックを開いても同じ現象が発生することがあります。マクロを使わず、手動でブックを開いて閉じるだけでもVBAプロジェクトが残ってしまうことがあり、原因がまったく分かりません。
 
何か解決方法がありましたら教えていただけないでしょうか。

回答
投稿日時: 24/09/05 17:45:08
投稿者: WinArrow

Workbooks.Open」「Workbooks.Close」だけを行うマクロを実行してみましたが、やはりVBAプロジェクトが残ってしまいます。
 
この具体的なコードを掲示してみてください。

回答
投稿日時: 24/09/05 18:09:26
投稿者: sk

引用:
閉じたブックのVBAプロジェクトがVBEに残る

引用:
原因を調べるために新しいブックを作成し、集計対象のブックに対して「Workbooks.Open」「Workbooks.Close」だけを行うマクロを実行してみましたが、やはりVBAプロジェクトが残ってしまいます。

引用:
集計対象ではない別のブックを開いても同じ現象が発生することがあります。

現時点で挙げられた情報だけでは、直接の原因を特定することは困難です。
 
・別の PC 上でもその現象が再現されるかどうかを確認する。
 
・「再現される PC 」と「再現されない PC 」が存在するのであれば、
 両者の相違点をあらゆる側面から 1 つ 1 つ検討し、原因となり得る要素を
 しらみつぶしに取り除く。
 
・それでもダメなら Office または OS の再インストールなどを検討する。
 
今のところのアドバイスとしては以上です。
 
例えば、その環境に常駐しているアプリケーションの影響によって
同種の現象が発生する事例が過去にも確認されています。
 
Microsoft コミュニティより:
https://answers.microsoft.com/ja-jp/msoffice/forum/all/vba/83a90596-a6a5-45d8-b272-5edc4260658d
 
上記のケースでは Google Drive が槍玉に挙げられていますが、
一般的にはセキュリティ対策ソフトの監視機能による影響を
受けている可能性、サードパーティ製の Office アドイン、
あるいは Windows や Office の更新による不具合などが考えられます。

回答
投稿日時: 24/09/06 09:50:51
投稿者: Suzu

全てのブックを閉じ、一度、Excelを終了して新たに開き直しても同じ現象が起きませんか?
 
全てのブックを閉じ、Excelを終了
この段階で、タスクマネージャーでプロセスを確認してみてください。
Excel が 残っていませんか?
 
これは、何かしらの原因で、Excelの別プロセスが起動し、終了できていない事を示しています。
 
タスクから、その Excel を終了したら 速くなったりしませんか?
 
この状況が、集計ブックのVBAを動作させた後 にしか 発生しないのであれば
その集計ブックの VBA に問題がある可能性が高いと言えます。
 
あとは、すぐに確認できる方法としては
ファイル名を指定して実行 にて、
 
Excel /Safe
 
の様に、Excel を セーフモードで起動、これで、アドインの読み込みは制御できますから
セーフモードで、集計ブックを 実行し、
 ・必ず プロセスが残るのであれば
    その 集計ブック の VBA
    または、その PCの実行環境 の問題
       (Excelの破損や、Windows環境、セキュリティ環境、ネットワークの問題)
        → この場合は、別 PC で実行してみて 再現するかで 問題の切り分けができるでしょう。
 
 ・VBAの実行が、途中で止まるのであれば、アドインが読み込まれていないので止まる。
   と いう事は、アドイン または、アドイン&集計ブック の組み合わせで問題がある。
   (これは集計ブック側の呼び出し方に問題がある可能性、アドイン側の可能性 両方ありえます)
 
 ・実行して問題が発生しないのであれば・・・・
  ちょっと、すぐには 候補がみつからないですね。
 
 
何にしても、提示された情報のみで、何が原因なのかは判断しかねます。
実行環境を変更し、原因を探ってみてください。

投稿日時: 24/09/06 10:02:04
投稿者: miyagi07

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

Sub Test()

    Dim Wb As Workbook

    Set Wb = Workbooks.Open(FileName:="(ファイルパス)")

    Wb.Close SaveChanges:=False
    
    Set Wb = Nothing

End Sub

 
これだけのコードでもVBAプロジェクトが残ってしまいます。
 
 
sk様
 
ご返信ありがとうございます。
Excelをセーフモードで立ち上げてマクロ実行、常駐しているアプリを無効にできるものは無効にしてマクロ実行も試してみましたが、どちらでも問題が特定できませんでした。
しかし、別のパソコンで実行したところ、VBAプロジェクトが残りませんでした。
元のパソコンはWindows10で別のパソコンはWindows11のため、OSの問題かあるいはセキュリティソフトの影響かもしれません。
OSもセキュリティソフトも私には変更する権限がないため、結局どうすることもできないのですが…。
大変参考になりました。ありがとうございました。

投稿日時: 24/09/06 10:22:28
投稿者: miyagi07

Suzu様
 
すべてのブックを閉じて、Excelを終了するとタスクマネージャーからExcelが消えます。Excel自体を終了することで、それまで残ってしまっていたVBAプロジェクトも一旦すべて消えます。
 
また、マクロを使わず手動でブックを開いても同じ現象が発生するので、集計の処理を行うブックには問題がないと思っていたのですが、やはり問題があるのでしょうか。
マクロを変更して色々試してみても、同じ条件下でもVBAプロジェクトが残るか残らないかが変わってしまい、どうにも原因の特定ができません。(ただし、通常通り集計の処理を実行すると必ずVBAプロジェクトが残ります)
 
Excelをセーフモードで立ち上げてマクロ実行を試しましたが、やはりVBAプロジェクトが残ってしまいます。
別のパソコン(Windows11)ではVBAプロジェクトが残らなかったため、OSの問題かもしれません。
 
ご回答いただきありがとうございました。

回答
投稿日時: 24/09/06 16:45:40
投稿者: Suzu

現象として
 
Windows10
    集計ブック の マクロを実行すると 必ず発生
    手動で 集計ブック 以外の ブックを 開いた際に 発生する事がある
 
    Excelをセーフモード にて実行、集計ブックのマクロを実行すると 必ず発生
 
Windows11
    (Excelをセーフモード にて実行、)集計ブック の マクロを実行しても、発生しない
 
 
少なくとも、
あるマシンでは発生し あるマシンでは発生しない。
 
他のマシンでは、問題なく動いていて
手動で 集計ブック 以外の ブックを 開いた際に 発生する事がある
 
という事であれば、直接原因は、VBAコード では無い可能性が高く
PC 固有の 問題である可能性の方が高いでしょう。
 
・開いているファイルがクラウドを含めた、ネットワーク上に保存してあるのであれば
 ローカルに移動させ試してみる。
・Officeの Update を含めた、Windows UpDate の実行
・Officeの 修復
の順で試す事でしょうか。
 
それでも、発生するのであれば、
同じ Windows10 の マシンを用意し、
設定・環境 について比較・調整しながら原因を探っていく事になるでしょう。

回答
投稿日時: 24/09/06 21:04:40
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

こんばんは。
この件、1週間くらい前から私も発生しています。(Windows11、Excel2021)
根拠はないですが、WindowsかOfficeのアップデートによるものではないかと疑っています。
気持ち悪いし、少し不便ですが、そのうちまたアップデートで直るだろうと思って、まだ対策はしていません。
ちょっと確認してみました。
どうやらVBAでマクロ有ブックをCLOSEするとブックは閉じられるが、VBEのプロジェクトエクスプローラーではそのVBAプロジェクトが残る、そこからコードのウィンドウも開くことができて実行も可能。
Workbooks.Countではカウントされないし、Workbooks("残っているブック名")でも参照できず、やはりブックは閉じられてはいる模様。
確かにフォルダの中の複数ブックを扱う処理とかでマクロ有ブックが多数あるとうまくいかなくなりそうですね。

回答
投稿日時: 24/09/09 21:39:59
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

こんばんは。
 
こちらが参考になりました。リンク先はAccessの場合ですが。
 
https://answers.microsoft.com/ja-jp/msoffice/forum/all/access%E3%81%AEvba%E3%81%8B%E3%82%89sharepoint/4d71e73b-e0d4-4d6b-b117-d964c307cb25
 
恐らく類似の問題と思われます。バージョン2408からの現象と思われ、ちょっと手間なので試していませんが、2407に戻すと元に戻ると思われます。リンク先ではセキュリティ関連のアップデートによるのではないかとあり、ちょっと調べてみたところ、マクロのセキュリティを許可すると閉じても残ってしまうようです。
 
「警告して、VBAマクロを無効にする」のときにマクロブックオープン時に出る「Microsoft Excelのセキュリティに関する通知」ダイアログやExcelの上部に出る「セキュリティの警告」通知バーでマクロを有効にしたときに起こるようなので、これを回避したらVBEに残りませんでした。確認したのは、以下の場合です。
・「VBAマクロを有効にする」にして警告なしで実行にした場合
・「信頼できる場所」を設定してそこにファイルを置いた場合
 
リンク先ではセキュリティ強化の一環でバグではない可能性も指摘されてましたが、もしそうだとして2409以降も修正されなかったら嫌ですね。

回答
投稿日時: 24/09/09 22:04:57
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

要はマクロの許可をしなければ大丈夫のようなので、以下を試してみました。
 

Sub Test()

  Dim WB As Variant

  WB = Application.GetOpenFilename
    
  If VarType(WB) = vbBoolean Then
     Exit Sub
  Else
     Workbooks.Open WB
  End If

End Sub

マクロでマクロ有ブックを開くと強制的にマクロが実行されて許可が発生しないのでうまくいくのではと思ったら、残りませんでした。
ちょっと手間ですが応急処置にはなるかもしれません。

回答
投稿日時: 24/09/11 21:17:20
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

Officeのアップデートが来ていて、
更新したら直りましたね。

トピックに返信