🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

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

SQL

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

Q&A

解決済

1回答

2070閲覧

VBAでセルから1セルづつ値を読み取りSQLを実行したい

cc000072

総合スコア28

VBA

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

SQL

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

0グッド

0クリップ

投稿2020/12/10 06:42

編集2020/12/10 06:44

SQL実行するVBAを開発中なのですが、詰まってしまい困っております。皆様のお知恵をお教え頂ければ幸いです。

■やっていること
Excel上に、社員IDと入社日の項目を作って、VBAでセルの社員IDを取得し、それをSQLのWHERE文の条件に入れて
データベースにアクセスし、入社日を取得するVBAを開発中です。

For文で1行づつ社員IDを取得し、SQLを発行し入社日を取得するという流れです。
|NO|社員ID|入社日|
|1|111111||
|2|222222||
|3|333333||
|4|444444||

VBA

1Dim Rs As New ADODB.Recordset 2MaxRow = Range("C2")End(xlDown).Row 3 4For intGetPosition = 3 To MaxRow 5 intGetEmpID = Cells(intGetPosition, 3).value 6 strSQL = "Select 入社日 FROM 社員テーブル WHERE 社員ID =" & intGetEmpID 7 8 Rs.Open strSQL, cn 9 10 ActiveSheet.Cells(intGetRowPosition, 5).CopyFromRecordset Rs 11 12Next intGetRowPosition

■困っていること
VBAを実行したときに1行目の111111を取得しSQLのWHERE以降に追記し、データを取得し入社日セルに張付けることが出来るのですが2行目の222222を取得しSQLのWHERE以降に追記し実行することが出来ません。

エラーは 3705)オブジェクトが開いている場合は操作は許可されません。。。というエラーが出ています。

■やりたいこと
2行目以降の社員IDを取得してSQLのWHERE文に追記し、実行することでExcelの入社日に張付けるということをしたいと考えております。

ご教授頂ければ幸甚です。

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

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

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

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

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

Orlofsky

2020/12/10 07:11

1行づつ ↓ 1行ずつ 質問は修正できます。
guest

回答1

0

ベストアンサー

for文で1行ずつSQL文を実行するのであれば、for文の最後に

Rs.Close

を追記してみて下さい。
セッションが開いた状態で再度SQLを実行しようとして、排他制御で弾かれていると思います。

投稿2020/12/10 06:57

K_Y_M

総合スコア100

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

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

cc000072

2020/12/10 08:06

早速のご提案ありがとうございます!試したところ期待した1行ずつ取得することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問