UPDATE文を実行して更新件数を取得する方法
スポンサーリンク
Excel VBA から SQL Server 上で UPDATE 文を実行してデータを更新し、更新件数を取得するサンプルコードです。
SQL Server での事前準備
VBA のサンプルコードを実行する前に、 TEST データベースを作成して、以下のSQLを実行してください。 TEST_TABLE というテーブルを作成し、データを 5 件登録します。
sql(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE [dbo].[TEST_TABLE] ( [ID] [INT] NULL, [MEMO] [VARCHAR](10) NULL ); INSERT INTO TEST.dbo.TEST_TABLE VALUES (1, 'いち') ,(2, 'に') ,(3, 'さん') ,(4, 'よん') ,(5, 'ご'); |
VBA のサンプルコード
UPDATE 文を実行して、更新件数を取得するサンプルコードです。
このコードを実行するには、事前にADODBへの参照設定が必要です。
VBA(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | Option Explicit Sub test() '■接続先情報を設定 'この例では、ローカルのインスタンス「SQLEXPRESS」にWindows認証で接続する。 Dim connectionString As String Dim dataSourceName As String Dim databaseName As String '「.」はローカルを表す。他のサーバに接続する場合はホスト名を指定。 dataSourceName = ".\SQLEXPRESS" ' 'TESTデータベースに接続する。 databaseName = "TEST" 'ODBC接続の接続文字列を作成する。 connectionString = "" connectionString = connectionString & "PROVIDER=MSDASQL;" connectionString = connectionString & "DRIVER={SQL Server};" connectionString = connectionString & "SERVER=" & dataSourceName & ";" connectionString = connectionString & "INITIAL CATALOG=" & databaseName & ";" connectionString = connectionString & "Trusted_connection=yes; " '■接続 Dim objConnection As ADODB.Connection Set objConnection = New ADODB.Connection objConnection.CursorLocation = adUseClient objConnection.Open connectionString '■実行するSQLを設定 Dim objCommand As ADODB.Command Set objCommand = New ADODB.Command Dim sql As String sql = "" sql = sql & " UPDATE" sql = sql & " TEST.dbo.TEST_TABLE" sql = sql & " SET" sql = sql & " MEMO = 'さん以下'" sql = sql & " WHERE" sql = sql & " ID <= 3;" Set objCommand.ActiveConnection = objConnection objCommand.CommandType = adCmdText objCommand.CommandText = sql '■更新件数を受け取る変数を準備 Dim affectedRowNum As Long '■SQLを実行 objCommand.Execute affectedRowNum '■更新件数を表示 Debug.Print "更新された件数→" & affectedRowNum '■終了処理 Set objCommand = Nothing Set objConnection = Nothing End Sub |
上記を実行すると、テーブルのデータが 3 件更新され、イミディエイトウインドウに「更新された件数→3」と表示されます。
スポンサーリンク