![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルでVBAを組んでいます。
Aシート・Bシートにデータがあり、それをSQLで集計し、
Cシートに出力をしたいのですが、
『リンクされているExcelのワークシートを表示するための接続が切断されました。』
というエラーが出て、解決しません。
(調べてみましたが、似たような例がなく解決には至りませんでした・・・。)
どなたかご教示お願い致します。
Private Sub CommandButton1_Click()
Dim dbCon As Object
Dim dbCols As Object
Dim dbRes As Object
Dim strSQL As String
Dim sh1 As Worksheet
Set sh1 = Worksheets("Cシート")
Set dbCon = CreateObject("ADODB.Connection")
dbCon.Provider = "Microsoft.Jet.OLEDB.4.0"
dbCon.Properties("Extended Properties") = "Excel 8.0"
dbCon.Open ThisWorkbook.FullName
strSQL = ""
strSQL = strSQL & "SELECT *"
strSQL = strSQL & vbCrLf & "FROM [Aシート$] LEFT JOIN [Bシート$] ON [Aシート$].NO= [Bシート$].NO"
Set dbRes = CreateObject("ADODB.Recordset")
dbRes.Open strSQL, dbCon, adOpenKeyset, adLockReadOnly
sh1.Range("A1").CopyFromRecordset dbRes
dbRes.Close
Set dbRes = Nothing
dbCon.Close
Set dbCon = Nothing
End Sub
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
直接の回答にはなっておりませんが、自ブックをADOで処理=必然的に開いているブックをADOで処理となりますが、メモリリークが発生してトラブる様ですので、方針を変更された方が良いと存じます。
リンク先では、自ブックのコピーを別名保存してそちらから抽出するという回避策にも言及されています。
http://support.microsoft.com/kb/319998/ja
なお、Microsoft.ACE.OLEDB.12.0プロバイダでは対策されている様です。
回答ありがとうございます。
お礼が遅くなり申し訳ありません。
諸事情でなるべく自ブックのみでマクロを組みたいのです。
QueryTableオブジェクトが、ADO・DAOの代わりになるのを知ったので、
それを試してみて、ダメだったらコピー参照の方法を取りたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Excel(エクセル) エクセル 「実行時エラー"13":型が一致しません。」エラーについて 5 2022/05/04 10:46
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excel VBA 複数ブックシートごとにデータを統合する方法について 4 2022/05/20 14:23
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
[Excel]ADODBでNull変換されてしまう
Visual Basic(VBA)
-
-
4
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
5
Access ADOで文字列を日付型へinsert
その他(プログラミング・Web制作)
-
6
エクセルでエラーが出て困っています。
Excel(エクセル)
-
7
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
8
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
9
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
10
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
11
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
12
On ErrorでエラーNoが0
Visual Basic(VBA)
-
13
文字列内で括弧を使うには
Visual Basic(VBA)
-
14
SQLでエラーです。
Visual Basic(VBA)
-
15
テーブルでメモ型になっているのにクエリで結合ができません。
その他(データベース)
-
16
レコードセットにnullの場合
Visual Basic(VBA)
-
17
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
18
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
19
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
20
[Excel VBA] ODBCによる外部データ取込で書式が変わる。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
【ExcelVBA】マクロの入ったシ...
-
【Excel VBA】データ貼り付け先...
-
ハイパーリンクでジャンプした...
-
エクセルで複数のシートに画像...
-
Wordで差し込み印刷時に表示す...
-
ワークシートそのものの色を変...
-
エクセルでリンク貼り付けした...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
エクセル、特定のシートにパス...
-
Accessのテーブルを既存のExcel...
-
エクセル、別のシートの表をポ...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
エクセルの2つのシートを並び...
-
エクセルシートのタブの階層化表示
-
アクセスからエクセルのシート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
エクセル、特定のシートにパス...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
アクセスからエクセルのシート...
-
特定の複数のシートに同じ処理...
-
エクセルで、シートの名前を変...
おすすめ情報