Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3978 / 13646 ツリー ←次へ | 前へ→

【59100】ADODB.Connectionでプロジェクトエクスプローラにブックが残るとき ON 08/11/28(金) 14:21 質問[未読]
【59103】Re:ADODB.Connectionでプロジェクトエクス... neptune 08/11/28(金) 16:14 発言[未読]
【59104】Re:ADODB.Connectionでプロジェクトエクス... ON 08/11/28(金) 16:31 発言[未読]
【59105】Re:ADODB.Connectionでプロジェクトエクス... Yuki 08/11/28(金) 16:49 発言[未読]
【59106】Re:ADODB.Connectionでプロジェクトエクス... ichinose 08/11/28(金) 17:39 発言[未読]
【59108】Re:ADODB.Connectionでプロジェクトエクス... ON 08/11/28(金) 18:32 お礼[未読]

【59100】ADODB.Connectionでプロジェクトエクスプ...
質問  ON  - 08/11/28(金) 14:21 -

引用なし
パスワード
   こんにちわ よろしくお願いします

下記で、
C:\Book1.xls
のシート一覧を取得しています


'参照設定:Microsoft ActiveX Data Objects 2.x Library
'    :Microsoft ADO Ext. 2.x for DDL and Security

Sub get_anth_bk_st_nm2()
   Dim cnnAdo As ADODB.Connection 'Microsoft ActiveX Data Objects 2.x Library
   Dim catAdo As ADOX.Catalog   'Microsoft ADO Ext. 2.x for DDL and Security
   Dim tdfAdo As ADOX.Table
   Set cnnAdo = New ADODB.Connection
   With cnnAdo
     .Provider = "Microsoft.Jet.OLEDB.4.0"
     .Properties("Extended Properties") = "Excel 8.0"
     .ConnectionString = "C:\Book1.xls"
   End With
   cnnAdo.Open
  
   Set catAdo = New ADOX.Catalog
   Let catAdo.ActiveConnection = cnnAdo
   For Each tdfAdo In catAdo.Tables
     Debug.Print tdfAdo.Name
   Next
   cnnAdo.Close
   Set catAdo = Nothing
   Set cnnAdo = Nothing
End Sub


このとき
C:\Book1.xls
が閉じた状態で実行する場合は問題ありませんが

C:\Book1.xlsを開いたまま実行し
その後、C:\Book1.xlsを閉じると
プロジェクトエクスプローラにVBAProject (Book1.xls)
が残ってしまいます

Q1どのようなコードにすれば、VBAProject (Book1.xls)が残らなくなりますか

Q2マクロブックado_test4xls.xlsを閉じると、タスクマネージャーのプロセスには
  エクセルはいなくなりますが、上記はいったいどういう状態なのでしょうか
  
アドバイスよろしくお願いいたします

【59103】Re:ADODB.Connectionでプロジェクトエク...
発言  neptune  - 08/11/28(金) 16:14 -

引用なし
パスワード
   ▼ON さん:
こんにちは

自信なしレスです。
>  
>   Set catAdo = New ADOX.Catalog
>   Let catAdo.ActiveConnection = cnnAdo
>   For Each tdfAdo In catAdo.Tables
>     Debug.Print tdfAdo.Name
>   Next
   'これを入れたらどうなりますか?手続き上は必要と思いますが?
   set catado.activeconnection=nothing
>   cnnAdo.Close
>   Set catAdo = Nothing
>   Set cnnAdo = Nothing
>End Sub

【59104】Re:ADODB.Connectionでプロジェクトエク...
発言  ON  - 08/11/28(金) 16:31 -

引用なし
パスワード
   ▼neptune さん:
こんにちは

>'これを入れたらどうなりますか?手続き上は必要と思いますが?
>Set catAdo.ActiveConnection = Nothing
ありがとうございます

試してみましたが、状況は変わりませんでした

何かありましたらよろしくお願いいたします

【59105】Re:ADODB.Connectionでプロジェクトエク...
発言  Yuki  - 08/11/28(金) 16:49 -

引用なし
パスワード
   ▼ON さん:

>C:\Book1.xlsを開いたまま実行し
>その後、C:\Book1.xlsを閉じると
>プロジェクトエクスプローラにVBAProject (Book1.xls)
>が残ってしまいます

私もよく分からないですが、
ConnectionをOpenすれば上記のような状態になります。
Openする前に開いているか確認して開いていれば閉じる。
必要であればデータ取得後またOpenする
というようことですね。
又、上記の状態でProjectを選択して挿入ー>標準モジュールとかすると
エラーになりますからブックとしての実体はないようです。
回答になっていませんが参考程度で

【59106】Re:ADODB.Connectionでプロジェクトエク...
発言  ichinose  - 08/11/28(金) 17:39 -

引用なし
パスワード
   こんにちは。

この現象とおそらく同系列の不具合について、以前にも投稿がありました。

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28447;id=excel


support.microsoft.com/default.aspx?scid=KB;JA;319998

↑ここに本店見解があります。

結論は、対象ブックを開いてAdoで繋がない事ですね!!

【59108】Re:ADODB.Connectionでプロジェクトエク...
お礼  ON  - 08/11/28(金) 18:32 -

引用なし
パスワード
   ▼Yuki さん:
こんにちは

動作の解説
勉強になります
ありがとうございます

>又、上記の状態でProjectを選択して挿入ー>標準モジュールとかすると
>エラーになりますからブックとしての実体はないようです。
から

だったら、そのままでもいいかな
なんて考えてしまうような駄目人間なんですが

やはり皆さんは、不明なエラーを避けるため
アドバイス頂いた
>Openする前に開いているか確認して開いていれば閉じる。
ですよね?

基礎が不足している上、ずぼらな私に
コーディングに対する心構えについて
簡単にお叱り系のコメント等あればよろしくお願いいたします


を、投稿しようとしたら

▼ichinose さん:
こんにちは

>この現象とおそらく同系列の不具合について、以前にも投稿がありました。
リンク先のご紹介ありがとうございます

メモリ リーク
文言は知っていましたが、初めて身近に接する事ができたような気がします (~_~;)

▼【28395】メモリ使用量 EXCEL_VBA中の下
勉強になります
ichinoseさんのテスト他
ヘビーすぎて今は理解できることも少ないですが少しずつ勉強させて頂きます

>結論は、対象ブックを開いてAdoで繋がない事ですね!!
了解です ありがとうございました


各ブック、各シートに散在しているDTを集めて、SQLで抽出するのに便利なので
ある程度ものにしたいと思っていました
おかげさまで、なんとなく、使えこなせそうな気がしてきました


>だったら、そのままでもいいかな
は、やっぱり、自ら、地雷原に踏み込むような行為ですね
戒めたいと思います


ところで
よろずやさん 最近お会い?することがないような気がします
以前、mougでなんどかおせご教授頂いたことがあったのですが
QAアドバイザー隠居しちゃったのかな・・・
(私はmougに日中接続できないのであちらは引退しこちらに引っ越しました(^o^))

3978 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free