質問: ExcelのマクロからAccessのデータを指定の箇所だけ抜き出す方法を教えていただきたいです。 名前 都道府県 出身地 稲垣 千葉 埼玉 稲垣 千葉 埼玉 斎藤 東京 東京 斎藤 東京 東京 田中 千葉 群馬 田中 新潟 群馬 ↑のような表で都道府県のところを千葉で固定にして 名前のところをユーザーフォームに記載したらそこの列を引っ張ってくるようにしたいです。 ExcelやAccessに詳しい方いらっしゃいましたらご教示お願いいたします。 条件しては ExcelとAccessは同じフォルダ内にある。 Accessの名前は「資料」 カラム名は「閲覧」 Excelのユーザーフォームに田中と入れたら下記のようにExcelに貼り付けたいです。 名前 都道府県 出身地 田中 千葉 群馬
回答: 質問の条件に不足、矛盾があるので、そこは勝手に推測して回答します。 下記のような条件とします。 * マクロのあるExcelブックとAccessデータベースファイルは同じフォルダ内にある。 * Accessデータベースファイル名は「資料.ACCDB」 * その中のデータの入っているテーブル名は「閲覧」 * Excelのユーザーフォームにテキストボックス「TextBox1」とコマンドボタン「CommandButton1」が配置してある * テキストボックスに名前を入力してコマンドボタンをクリックしたら、「閲覧」テーブルから「名前」が一致して、かつ都道府県が「千葉」のレコード(行)を抽出して、アクティブシートのA2セル以降に出力する。 ``` Private Sub CommandButton1_Click() Dim DBFile As String DBFile = ThisWorkbook.Path & "\資料.ACCDB" '資料.ACCDBファイルに接続 Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open _ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile '対象データを抽出するSQL Dim strSQL As String strSQL = "SELECT * FROM 閲覧 where 都道府県='千葉' AND 名前='" & Me.TextBox1.Value & "';" '対象データをレコードセットとして開く Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open strSQL, cn, adOpenStatic 'レコードセットをA2セル以降に出力 Range("A2").CopyFromRecordset rs 'レコードセットを閉じる rs.Close: Set rs = Nothing 'ACCDBファイルへの接続を閉じる cn.Close: Set cn = Nothing End Sub ``` 追記 今回は回答しましたが、丸投げの推奨されない質問になっています。 次回からは、下記を参照して、指摘されていることに留意して質問してください。 質問するときのヒント|teratail(テラテイル) 推奨していない質問|teratail(テラテイル)