質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

1回答

2416閲覧

エクセルVBAからACCESSのデータを呼び出し

hajimete

総合スコア41

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/06/23 12:36

編集2018/06/24 10:08

前提・実現したいこと

エクセルVBAでACCESSから特定のデータを呼び出す機能を作っています。

■■な機能を実装中に以下のエラーメッセージが発生しました。

該当のソースコード

VBA,SQL

1Sub fetchRecord() 2 3Dim ws As Worksheet 4Set ws = ThisWorkbook.Worksheets("Sheet2") 5 6Dim strFileName As String 7strFileName = "test4.accdb" 8 9Dim adoCn As Object 'ADOコネクションオブジェクト 10Set adoCn = CreateObject("ADODB.Connection") 'ADOコネクションオブジェクトを作成 11adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & strFileName & ";" 'Accessファイルに接続 12 13Dim adoRs As Object 'ADOレコードセットオブジェクト 14Set adoRs = CreateObject("ADODB.Recordset") 'ADOレコードセットオブジェクトを作成 15 16Dim id As Long 17id = InputBox("呼び出すIDを入力してください") 18 19Dim strSQL As String 20strSQL = "SELECT * FROM 成績表 WHERE ID=" & id 21 22adoRs.Open strSQL, adoCn 'SQLを実行して対象をRecordSetへ 23ws.Range("A2").CopyFromRecordset adoRs 24 25adoRs.Close 'レコードセットのクローズ 26adoCn.Close 'コネクションのクローズ 27 28Set adoRs = Nothing 29Set adoCn = Nothing 'オブジェクトの破棄 30 31End Sub 32

サイトを参考にして作成した後

Sub fetchRecord() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet2") Dim strFileName As String strFileName = "test4.accdb" Dim adoCn As Object 'ADOコネクションオブジェクト Set adoCn = CreateObject("ADODB.Connection") 'ADOコネクションオブジェクトを作成 adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & strFileName & ";" 'Accessファイルに接続 Dim adoRs As Object 'ADOレコードセットオブジェクト Set adoRs = CreateObject("ADODB.Recordset") 'ADOレコードセットオブジェクトを作成 Dim id As Long txt = InputBox("呼び出すIDを入力してください") Dim strSQL As String strSQL = "SELECT * FROM テーブル1 WHERE フィールド2= '" & Txtフィールド2 & "' & txt" adoRs.Open strSQL, adoCn 'SQLを実行して対象をRecordSetへ ws.Range("A2").CopyFromRecordset adoRs adoRs.Close 'レコードセットのクローズ adoCn.Close 'コネクションのクローズ Set adoRs = Nothing Set adoCn = Nothing 'オブジェクトの破棄 End Sub

新たに作成してみたのですがエラー内容

実行時エラー'2147217904(80040e10)':
1つ以上の必要なパラメーターの値が設定されていません。

試したこと

上記のソースからマクロで呼び出すようにはできたのですが、
イメージしている機能はセルに日付を入力したらその日付でデータを
取得してくるものを作成しようと思います。
毎回マクロを呼び出して指定するのではなく特定のセルに日付を入れたら
抽出するVBAのヒントをどなたかわかる方教えていただけますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

投稿2018/06/23 12:59

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hajimete

2018/06/24 04:47

Private で常にアクティブにしてIntersectで指定の範囲が更新されたら 実行する内容は理解できました。 しかしこちらに掲載されているサンプルコードを実行してみましたが 動作しないです。 ベースのソースに追加しても動作しなかったです。
hatena19

2018/06/24 05:27

Worksheet_Change に実際に記述したコードを質問に追加してください。 そして、ブレークポイントを設定して、ステップ実行するなどの、デバッグ作業をしてください。 そして、デバッグの結果を提示してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問