この記事では、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週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。