[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAProjectが消えない』(のぶすけべ〜)
Excel 2000 or 2003 Os Xp
マクロでA.xlsからB.xlsを開き、B.xlsを閉じてもB.xlsのプロジェクトが消えない。
マクロを実行した回数分B.xlsのプロジェクトが増える。
A.xlsを閉じると元に戻るのですが、解決策はありますでしょうか?
よろしくお願いします。
>マクロを実行した回数分B.xlsのプロジェクトが増える。
マクロでB.xlsを開いた後、モジュールレベルのワークブックオブジェクトに代入して、Nothingにしていないってことはないだろうか?
' http://hp.vector.co.jp/authors/VA016119/kitan01.html#11 このなかの「幽霊プロジェクトの怪」の項。
(ぶらっと)
ワークブックオブジェクトには代入しておらず
Workbooks.Open "B.xls"で開き
Workbooks("B.xls").Closeで閉じています。
よろしくお願いします。(のぶすけべ〜)
>Workbooks.Open "B.xls"で開き >Workbooks("B.xls").Closeで閉じています。
それでは新規ブックに上記だけを記述して実行しても、 B.xlsのプロジェクトが消えないのですか? (zzz)
ぶらっとさんの紹介しているリンク先をよく読んでみてください。 A.xls側のマクロの書き方の問題だと思うので、 オブジェクト変数にB.xlsのオブジェクトを参照しているものがあれば、 ブックを閉じる前に Set 変数 = Nothing で変数の中身を開放する記述をしてみてください。 ちなみに、当方で次のような経験があります。 2000で作成したブックを2002で開いたときにそのような現象が発生した ことがあります。Excelをアップデートしたら治まりました。 そのときは別の不具合を対象としたアップデートだったため実は 正確な確認はしていないのですが、コードを修正した覚えが無いので、 もしかしたらバグ(?)だったのかもしれません。 (みやほりん)
Workbooks.Open "B.xls"
Workbooks("B.xls").Close
だけのソースにするとプロジェクトがちゃんと消えましたので、ソースを見直してみます。
特に変数の開放には注意してみます。(のぶすけべ〜)
参照設定 Microsoft ActiveX Data Object 2.5 Library
Dim adoCON As New ADODB.Connection
Workbooks.Open "C:\B.xls"
adoCON.Open "Driver={Microsoft Excel Driver (*.xls)};" & _ "DBQ=" & "C:\B.xls" & ";" & _ "ReadOnly=0"
adoCON.Close Set adoCON = Nothing
Workbooks("B.xls").Close
上記のソースのadoconのオープンが影響しているようですが、対応策がわかりません。
どなたかわかる方がいらっしゃいましたらよろしくお願いします。
エクセルを開きなおすと増えたプロジェクトは消えます。(のぶすけべ〜)
オープンを2回していたのが原因のようでした。
ワークブックのオープンをやめ、ADOのオープンのみにし、データをSQLでとってくるように
したらうまくいきました。
よく考えるとすぐにわかることですね。恥ずかしい 。
幽霊プロジェクトおそろしや〜(のぶすけべ〜)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.