質問があります。
掲題の通りですが、ExcelのVlookupでACCESSのクエリを参照してレコードを取得したいです。
今まで、ACCESSのクエリをExcelにエクスポートして、それをExcelでVlookupで持ってきていました。それを、Accessから直接Vlookupでもってきたいです。
ADO+VBAでやるだろうとは理解していますが、どうも難しくわからないです・・・。コードの記述を含めてやり方を教授して頂けると幸いです。
画像をアップロードしたのでよろしくお願いいたします。
画像のA1-D5がExcelで、下のテーブルはACCESSのものです。
ACCESSのテーブルをExcelのシートにコピペしてVlookupすれば良いのですが、後学のため、それと応用を利かすためにAccessのクエリを直接参照してデータを取得する方法を知りたいです。
よろしくお願いいたします。
それと、もし、その他オフィスの項目で聞くべきでしたら教えて頂ければ幸いです。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ADO+VBAで正解です
エクセルのファイルとアクセスのファイルが同じ場所にあるという前提で
'先ずは宣言を行います
Dim ws As Workspace
Dim db As DAO.Database
Dim rs, As DAO.Recordset
Dim strSQL As String
'保存場所の設定
dbNAME = "アクセスファイル名.mdb"
mydb = ActiveWorkbook.Path & "\" & dbNAME
'ワークスペースとデータベースの設定
Set ws = DBEngine.Workspaces(0)
Set db = OpenDatabase(mydb)
'エクセル上で実行するクエリ文の作成と実行
strSQL = "select * from テーブル名 Where 商品名 = " & "りんご" & ";"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
'セルに出力
range("D2") = rs!出荷数
で実現出来るかと思います。
データベースはアクセス、作業はエクセルでと割り切ると良いかと思います。
実際のテーブルはもっと縦も横も多いと思いますので、SQL文を
strSQL = "select * from テーブル名 Where 商品名 = " & "りんご" & "and 品種 = " & "陸奥" & ";"
と変えれば追加できます。
上記 "りんご" 部分を cells(2, 1) と参照する形でも対応できますし、
for next Do loop 文で cells(i, 1) と変数を入れれば動的な処理もできます。
それでは~
この回答への補足
ありがとうございます!
下記の文に改造して使いました。
Option Explicit
Sub test()
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String
Set db = New ADODB.Connection
db.Provider = "Microsoft.ace.oledb.12.0"
db.Open "C:\Users\Kei\Desktop\Test\Test.accdb"
Set rs = New ADODB.Recordset
rs.Open "Ship", db, adOpenStatic
strSQL = "select * from Ship where 商品名 = " & "りんご" & ";"
Range("D2") = rs!出荷数
rs.Close
db.Close
Set db = Nothing
Set rs = Nothing
End Sub
ここに変数を使って繰り返し文を作れば全レコードを入力できますね。
ありがとうございました。
ありがとうございます。
繰り返し文がどうしても出来ずに詰まってしまいました・・・。
また質問させて頂きます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- Access(アクセス) Accessのスプレッドシートエクスポートで、シートが追加されてしまう 2 2022/07/16 21:45
- その他(Microsoft Office) エクセルについて教えてください。 2 2022/10/20 14:55
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Excel(エクセル) excel 行でソートすると計算式が上手くいかない。 6 2022/06/01 08:18
- Access(アクセス) accessでexcelを読み込む時のデータ型 1 2022/03/28 19:45
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(Microsoft Office) Microsoft Office Specialist 2019のエキスパート認定について 2 2023/06/24 05:40
- Visual Basic(VBA) worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応 3 2022/12/27 22:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのクエリでSplit関数は...
-
更新不可能なクエリに対して更...
-
クエリのデータをテーブルに入...
-
アクセス:クエリの結合とリレ...
-
accessでクエリの結果だけをリ...
-
クロス集計クエリの結果をテー...
-
アクセス クロス集計クエリ→テ...
-
アクセス:テーブルに数式を保...
-
アクセス 項目毎にデータを横...
-
Access「レコードが削除されま...
-
アクセスのクエリとDlookupはど...
-
ACCESSで行数指定(5万行目~8...
-
教えてください! アクセスのac...
-
テンポラリファイルのための空...
-
access インポート時、既にある...
-
クロス集計クエリの結果を一時...
-
ACCESS2000 クエリをテーブル化...
-
ACCESSでテーブルの一部だけを...
-
ACCESSでアンケート調査→回答ごとの...
-
Accessにてテーブルが異なるデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クロス集計クエリの結果をテー...
-
アクセス:クエリの結合とリレ...
-
Access「レコードが削除されま...
-
アクセスのクエリでSplit関数は...
-
クエリのデータをテーブルに入...
-
accessでクエリの結果だけをリ...
-
デザインビューにてテーブルが...
-
アクセス 項目毎にデータを横...
-
ACCESSで行数指定(5万行目~8...
-
access インポート時、既にある...
-
教えてください! アクセスのac...
-
更新不可能なクエリに対して更...
-
アクセス クロス集計クエリ→テ...
-
ACCESSでの重複レコードの削除
-
Accessのクロス集計→テーブル作...
-
access テーブル作成クエリでテ...
-
Access DAOのExecuteメソッドの...
-
Access2010「クエリが複雑すぎ...
-
Access 末尾に0を追加したい
-
エクセル複数シートをアクセス...
おすすめ情報