エクセルで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
ADOを使用して、パスワードの設定されているエクセルファイルを開く方法
Microsoft ASP
-
11
ACCESSのSQLで、NULLかNULLでないかの判定
その他(データベース)
-
12
ACCESSでデータ読み取り専用を解除する方法
その他(データベース)
-
13
On ErrorでエラーNoが0
Visual Basic(VBA)
-
14
文字列内で括弧を使うには
Visual Basic(VBA)
-
15
SQLでエラーです。
Visual Basic(VBA)
-
16
テーブルでメモ型になっているのにクエリで結合ができません。
その他(データベース)
-
17
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
-
18
レコードセットにnullの場合
Visual Basic(VBA)
-
19
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
20
UBoundに配列がありませんとエラーがでます
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ハイパーリンクでジャンプした...
-
【ExcelVBA】マクロの入ったシ...
-
Wordで差し込み印刷時に表示す...
-
エクセル2003で、複数のシート...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
ワークシートそのものの色を変...
-
エクセルのシート連番の振り直し
-
特定の複数のシートに同じ処理...
-
指定したシート名以外を非表示...
-
PCで使用できる暗記シート ア...
-
PowerQueryで行数の指定はでき...
-
ActiveSheet.Protect UserInter...
-
Excel(エクセル)で表紙(トップ...
-
Word2003 複数ファイルの同じ...
-
エクセルのチェックボックスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELで複数のシートを一度に「...
-
エクセルで複数のシートに画像...
-
エクセルでブック内の倍率がバ...
-
特定のシートのみ再計算させな...
-
ワークシートそのものの色を変...
-
【ExcelVBA】マクロの入ったシ...
-
ハイパーリンクでジャンプした...
-
エクセルのシート連番の振り直し
-
エクセル、特定のシートにパス...
-
エクセルの2つのシートを並び...
-
エクセルのシー名を二段表示に...
-
Wordで差し込み印刷時に表示す...
-
Accessのテーブルを既存のExcel...
-
【Excel VBA】データ貼り付け先...
-
EXCELの「シートの見出し」のフ...
-
EXCELの図形(テキストボックス)...
-
accessへエクセルの複数のシー...
-
アクセスからエクセルのシート...
-
特定の複数のシートに同じ処理...
-
エクセルで、シートの名前を変...
おすすめ情報