[[20120210153634]] 『VBAProjectが消えない』(のぶすけべ〜) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.