分かりやすく、使いやすく。

DELETE文を実行して削除件数を取得する方法

スポンサーリンク

Excel VBA から SQL Server 上で DELETE 文を実行してデータを削除し、削除件数を取得するサンプルコードです。

関連:SELECTINSERTUPDATE

  1. SQL Server での事前準備
  2. VBA のサンプルコード


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 のサンプルコード

DELETE 文を実行して、削除件数を取得するサンプルコードです。

このコードを実行するには、事前にADODBへの参照設定が必要です。

(参考)Excelで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
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 & " DELETE FROM"
    sql = sql & "     TEST.dbo.TEST_TABLE"
    sql = sql & " WHERE"
    sql = sql & "     ID >= 4;"
    
    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 

上記を実行すると、テーブルのデータが 2 件削除され、イミディエイトウインドウに「削除された件数→2」と表示されます。

スポンサーリンク
スポンサーリンク