エクセルで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
アクセスのエラー「クエリには出力フィールドが1つ以上必要です。」
その他(Microsoft Office)
-
8
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
9
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
10
On ErrorでエラーNoが0
Visual Basic(VBA)
-
11
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
12
テーブルでメモ型になっているのにクエリで結合ができません。
その他(データベース)
-
13
SQLでエラーです。
Visual Basic(VBA)
-
14
文字列内で括弧を使うには
Visual Basic(VBA)
-
15
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
16
レコードセットにnullの場合
Visual Basic(VBA)
-
17
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
18
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
19
[Excel VBA] ODBCによる外部データ取込で書式が変わる。
Visual Basic(VBA)
-
20
「RunSQL」と「Execute」の違い
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
エクセルで複数のシートに画像...
-
ワークシートそのものの色を変...
-
エクセル、特定のシートにパス...
-
EXCELの図形(テキストボックス)...
-
エクセルで、シートの名前を変...
-
エクセルの2つのシートを並び...
-
【ExcelVBA】マクロの入ったシ...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
指定したシート名以外を非表示...
-
[エクセル]行の挿入、シート間...
-
特定の複数のシートに同じ処理...
-
DATE関数 4月31日などのあ...
-
EXCELで存在しないシート...
-
エクセルのシー名を二段表示に...
-
Excel 全シート上のボタンを削...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
エクセル、特定のシートにパス...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
アクセスからエクセルのシート...
-
特定の複数のシートに同じ処理...
-
エクセルで、シートの名前を変...
おすすめ情報