この記事では、ExcelのマクロからSQLServerのストアドプロシージャを呼び出す方法についてご説明します。
【動画】ExcelのマクロからSQLServerのストアドプロシージャを呼び出す実際の動き
SQL Serverで用意したストアドを、VBA側から呼び出せるか確認してみました😄試したのはBULK INSERTで10万件のデータ追加。10万件程度ならサクッと入りますね😁
ただ、今やりたいのは200万件程度のデータ追加なので次は件数の多いテストデータを用意しなきゃ…😅#Excel #vba#SQLServer pic.twitter.com/zu5EfRxJVe— まさ@Excel、VBA、マクロ(経験年数16年) (@masamasa9785) February 25, 2021
ツイート内の動画では、ExcelのマクロからSQLServerのストアドプロシージャを呼び出しています。
ちなみに、動画内で呼び出したストアドプロシージャは何をしているかというと、BULK INSERTコマンドを実行し、データの追加を行っています。
ExcelのマクロからSQLServerのストアドプロシージャを呼び出す方法
ExcelのマクロからSQLServerのストアドプロシージャを呼び出すには、次の流れの通りにコードを書いていきます。
なので、最初にDBに接続するための接続情報を取得します。
コードの例
Dim DBName As String, connDB As String
Dim objConnection As ADODB.Connection
Dim objCommand As ADODB.Command
'DBの名前
DBName = "workDB"
'データベース接続情報を取得
connDB = "Provider=SQLNCLI11.1;"
connDB = connDB & "Data Source=(LocalDB)\MSSQLLocalDB;"
connDB = connDB & "Initial Catalog=" & DBName & ";"
connDB = connDB & "Trusted_Connection=yes;"
'ADODB.Connectionオブジェクトのインスタンスを生成する
Set objConnection = New ADODB.Connection
'CursorLocationプロパティにクライアントサイド カーソル(定数値:3)を設定する
objConnection.CursorLocation = adUseClient
'データベース接続情報を引数に指定してOpenメソッドでDBに接続する
objConnection.Open connDB
'ADODB.Commandオブジェクトのインスタンスを生成する
Set objCommand = New ADODB.Command
'Connectionオブジェクトを指定する
Set objCommand.ActiveConnection = objConnection
'CommandTypeに、実行するのがストアド プロシージャだと知らせる(adCmdStoredProcはストアドプロシージャの場合の定数(4))
objCommand.CommandType = adCmdStoredProc
'CommandTextプロパティに実行したいストアドプロシージャ名を設定する
objCommand.CommandText = "dbo.Bulkinsert001"
'ストアドプロシージャを実行する
objCommand.Execute
'以下終了処理を行う
Set objParameter = Nothing
Set objCommand = Nothing
Set objConnection = Nothing
コードの解説
最初に見て頂きたいのは36行目です。
36行目のExecuteメソッドが実際にストアドプロシージャを呼び出している(実行している)コードになります。
このExecuteメソッドを実行したいがために、DBに接続したり、どのストアドプロシージャを実行すのかを指定したりと色々やっているわけです。
DBへの接続情報取得は9~12行目、DBへの接続は21行目で行っています。
実行するストアドプロシージャ名は33行目でCommandTextプロパティに設定しています。
最後に
本記事ではExcelのマクロからSQLServerのストアドプロシージャを呼び出す方法についてご説明しました。
大まかな流れとしては次の3つのステップになります。
①DBへの接続情報取得
②DBへの接続
③ストアドプロシージャの実行
以上の流れを理解して頂き、先ほどご説明したコードの例や(ツイートの)動画を参考に、イメージを持っていただけたら幸いです。
プログラミングのスキルを習得するなら
プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。
プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。


