![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
ADOで複数のBookから抽出
することは可能でしょう
例えば
With objCn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "TEXT;HDR=YES;FMT=Delimited"
.Open "C:\Users\Desktop\新しいフォルダー (4)"
End With
With objCn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "Excel 12.0"
.Open "C:\Users\Desktop\Test_1.xlsx"
End With
というかんじで
select とかで必要なデータをとりだす
No.7ベストアンサー
- 回答日時:
趣旨が「1個のクエリで複数のBookから」でなければ、複数のConnectionを使えばいいかと思います。
デスクトップのTest_1.xlsxのSheet1とデスクトップの新しいフォルダー (4)内のtest.csvの最初のレコードのフィールドの値を表示します。
Sub sample()
Dim cnn1 As Object
Dim cnn2 As Object
Dim desktop As String
Dim rs1 As Object
Dim rs2 As Object
Dim i As Integer
Set cnn1 = CreateObject("ADODB.Connection")
Set cnn2 = CreateObject("ADODB.Connection")
desktop = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\"
Set rs1 = CreateObject("ADODB.Recordset")
Set rs2 = CreateObject("ADODB.Recordset")
With cnn1
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "TEXT;HDR=YES;FMT=Delimited;CSV"
.Open desktop & "新しいフォルダー (4)"
End With
Dim es1 As Object
With cnn2
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "Excel 12.0 xml;HDR=YES"
.Open desktop & "Test_1.xlsx"
End With
rs1.Open "SELECT * FROM [test.csv]", cnn1
MsgBox rs1.Fields.Count
For i = 0 To rs1.Fields.Count - 1
MsgBox rs1(i)
Next
rs2.Open "SELECT * FROM [Sheet1$]", cnn2
MsgBox rs1.Fields.Count
For i = 0 To rs1.Fields.Count - 1
MsgBox rs1(i)
Next
rs1.Close
rs2.Close
cnn1.Close
cnn2.Close
End Sub
複数のデータベースを1つのクエリで処理する方法は知りませんが、このVBAがAccessのVBAか、Accessが使える状況のExcelなどのVBAなら、Accessのデータベースにリンクテーブルとして登録すれば、同一データベース内のテーブルとして処理できると思います。
No.6
- 回答日時:
No.5です。
その後も調べては見ましたが、結局複数のBookに1つずつ接続しても複数の配列を作り比較する手間が出来るだけでしょうね。
>1回のSQL発行で複数のブックからの情報を得たいということです。
素直に複数を1つに纏めるか、あるいは私は古くて機能を持ってませんが『PowerQuery』とか言うのが2010以降だったかには追加されてるようなので、
それで出来るかどうかでしょうかね。
出来ないようであればExcelでは困難と思えます。
そもそも複数Bookと言ってもその中には複数のSheetが存在している仮定になってますので、そこまでやるなら『DBMS使ってよ』とか制作者は言いそう。
(例えばAccessとかSQLServerなどですかね。)
No.5
- 回答日時:
No.3です。
No.4での回答方法で解決出来るのかも知れませんが、私個人はそれをコード作成出来ないのとBookの破損を恐れて1つのBookへの集約を提案してます。
あとは実際にコード化出来る方がいらっしゃれば一発解決かもですね。
うちのは古いバージョンなので今ので動かなければ時間の無駄ですし。
最近のをお持ちの方にお任せします。
>最終的にどのような
多分最終目標という事よりExcelVBAでどんな事が出来るのか『ピンと来たら質問する』と言う感じに思いますよ。
No.4
- 回答日時:
No.2です。
過去の質問は把握していないため、最終的にどのようなことを行いたいのか不明で的外れかもしれませんが……
使用者側からみて、1回のSQL発行で複数のブックからの情報を得たいというのであれば、その様な機能をもったFunctionプロシージャなりクラスなりを定義すれば良いのではないでしょうか?
SQLとブック名のリストを引数にして渡して、内部で各ブックに対しADO接続して情報取得したのち、まとめて呼び出し元へ返せば、機能としては要望に沿うと思います。
No.2
- 回答日時:
↓で、できませんか? 未検証なのでExcelのバージョンが異なる場合には手直しが必要になるかもしれません。
https://www.akiratin.com/excel-vba%E3%81%A7sql%E …
ただ一回で複数のブックから一括でデータを取得するのは無理だと思います。
一度にひとつずつブックを接続していくしかないですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- Ruby パイソンでテキストファイルが読み込めない 1 2022/11/14 16:42
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 複数条件のオートフィルタ(VBA) 2 2022/12/09 15:40
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
ADOのCursorLocationプロパティ
Visual Basic(VBA)
-
-
4
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
5
ADOでアクセスのレコードに複数のフィルタをかけるには?
Access(アクセス)
-
6
EXCEL2003 VBAで2つのDBに接続してSQLを実行し、異なる
Visual Basic(VBA)
-
7
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
8
EXCEL VBAで複数人でのADO接続について
その他(プログラミング・Web制作)
-
9
ExcelVBAからADOで複数のDBへの接続
その他(ソフトウェア)
-
10
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
11
ADODBでの行番号の取得、もしくはCSVのインポートについて
Visual Basic(VBA)
-
12
実行時エラー 3265「要求された名前、または序数
Visual Basic(VBA)
-
13
「データベースまたはオブジェクトは読み取り専用なので、更新できません」エラーについて
その他(データベース)
-
14
アクセス VBAについて FROM句の構文エラー
Access(アクセス)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
18
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
-
19
Accessのフィールド数が255しかない=業務では使えない?
PowerPoint(パワーポイント)
-
20
エラー(型が一致しません。)の対処方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
Excelのマクロについて教えてく...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBS Bookを閉じるコード
-
vbaでvbaProjectのパスワード解...
-
Excelのマクロについて教えてく...
-
別ブックをダイアログボックス...
-
Excelのマクロについて教えてく...
-
vbaで他のブックに転記したい。...
-
VBA コードを実行すると画面が...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBAで複数のブックを開かずに処...
-
VBAで別のブックにシートをコピ...
-
VBA 実行時エラー 2147024893
-
[Excel]ADODBでNull変換されて...
-
Excel2007VBAファイルの表示に...
-
Excelのマクロについて教えてく...
-
【マクロ】アクティブセルにブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
別ブックをダイアログボックス...
-
(マクロ)データをAブックからB...
-
VBS Bookを閉じるコード
-
VBA 別ブックからコピペしたい...
-
VBA 複数のエクセルから一つの...
-
VBA シート名が一致した場合の...
-
【ExcelVBA】インデックスが有...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
vbaでvbaProjectのパスワード解...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
VBA コードを実行すると画面が...
-
【VBA】全シートの計算式を全て...
-
複数のエクセルブックをひとつ...
-
VBA 実行時エラー 2147024893
-
ExcelのVBAです。フォルダ内の...
おすすめ情報
挑戦いたましす。