【ExcelVBA】ExcelのマクロからSQLServerのストアドプロシージャを呼び出すには

この記事では、ExcelのマクロからSQLServerのストアドプロシージャを呼び出す方法についてご説明します。

【動画】ExcelのマクロからSQLServerのストアドプロシージャを呼び出す実際の動き

ツイート内の動画では、ExcelのマクロからSQLServerのストアドプロシージャを呼び出しています。

ちなみに、動画内で呼び出したストアドプロシージャは何をしているかというと、BULK INSERTコマンドを実行し、データの追加を行っています。

ExcelのマクロからSQLServerのストアドプロシージャを呼び出す方法

ExcelのマクロからSQLServerのストアドプロシージャを呼び出すには、次の流れの通りにコードを書いていきます。

STEP.1
DBへの接続情報取得
ストアドプロシージャを実行するにはまずはDBに接続しなければなりませんが、接続する情報(ユーザ名やパスワードといった接続情報)がなければDBに接続できません。
なので、最初にDBに接続するための接続情報を取得します。
STEP.2
DBへの接続
接続情報が取得出来たら、その接続情報をもとにDBに接続します。
STEP.3
ストアドプロシージャの実行
実行したいストアドプロシージャを指定して実行します。

コードの例

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

→ TechAcademyの「1週間 無料体験」はこちら