*

【SQL Server】Excel VBAでSQLを実行し、レコードを更新(追加、更新、削除)する

公開日: : 最終更新日:2016/08/15 Microsoft Office, データベース , , , , , ,

VBAでSQL Serverのテーブルに
SQL(Insert、Update、Delete)を発行し、
レコードを更新(追加、更新、削除)する方法

SQLのSELECTでVBAのレコードセットへ取得する方法はこちら
レコードセット内でデータを更新し、「UpdateBatch」を使用して、一括更新はこちら

実行前の準備

VBAを実行する前に、

ツール/参照設定の「Microsoft ActiveX Data Objects 6.1 Library」にチェックする

参照設定 - VBAProject
※6.1じゃなくてもOK。2.0、2.1、6.0で動作することは確認済み

顧客住所テーブルへレコード追加(Insert)のサンプル

※接続文字列はWindows認証、SQL Server認証を環境によって使い分ける。

Option Explicit
Sub SQL_Execute()

    On Error GoTo ErrorProc

    Dim DBSrv As String
    Dim DBName As String
    Dim strSQL As String
    Dim cn As ADODB.Connection
    Dim strConn As String

    '----------------------------------------------------
    ' DBSrvにDBサーバ名、DBNameにデータベース名
    '----------------------------------------------------
    DBSrv = "DBSERVER\SQLEXPRESS"
    'DBSrv = "DBSERVER\SQLEXPRESS,49391" 'ポート指定有
    DBName = "db_Sales"

    '----------------------------------------------------
    ' 実行SQL作成(strSQLに実行したいSQL格納)
    '----------------------------------------------------
    strSQL = "INSERT INTO [Customer].[顧客住所]"
    strSQL = strSQL & "([郵便番号],[都道府県名],[市町村],[町_番地],[更新日])"
    strSQL = strSQL & "VALUES"
    strSQL = strSQL & "('9990000','東京都','港区','テスト',getdate())"

    '----------------------------------------------------
    ' 接続文字列の指定
    '----------------------------------------------------
    'Windows認証
    strConn = "Provider=SQLOLEDB;Data Source='" & DBSrv & "';Initial Catalog='" & DBName & "';Trusted_Connection=Yes"
    'SQL Server認証
    'strConn = "Provider=SQLOLEDB;Data Source='" & DBSrv & "';Initial Catalog='" & DBName & "';UID=【ユーザ名】;PWD=【パスワード】;"

    'オープン
    Set cn = New ADODB.Connection
    cn.Open strConn

    'SQL実行
    cn.Execute strSQL
    
    'クローズ
    cn.Close
    Set cn = Nothing

    Exit Sub
    
'エラー処理
ErrorProc:

    MsgBox Err.Number & vbCrLf & Err.Description

End Sub

検証環境
Excel 2007 or Excel 2013
SQL Server 2012

Adsense

関連記事

Microsoft Office

【Excel】複数のエクセル(ブック)のシートを一つのブックに結合するVBA

複数のエクセルのシートを一つのエクセルにまとめるVBAを作ってみた。 ソースコードは使い方の下

記事を読む

データベース

【ODBC】Access2007でSQL Server 2012に接続する為のサーバー側の設定

ODBCでAccess2007からSQL Server 2012へ接続する為には SQL Serv

記事を読む

データベース

【Management Studio】テーブル単位のメモリ使用量の確認

1.Management Studioを起動し、メモリ使用量が確認したい対象サーバーへ接続 2.確

記事を読む

データベース

【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得

前回は、テーブルのレコードをVBAで直接更新(Insert/update/delete) 今回

記事を読む

Microsoft Office

【Access】循環参照エラーの回避方法

Accessでクエリを実行しようとすると クエリ定義の SELECT で指定されている別名

記事を読む

Microsoft Office

【Access2007】ODBCの罠。Windows7のコントロールパネルから作成したODBCがない。

Windows7の64bitでSQL Server 2012接続用のODBCを作成し Access

記事を読む

Microsoft Office

【Outlook】同期の失敗フォルダを消す方法

問い合わせで、Outlookの「同期の失敗」フォルダを消したいと受けた。 調べてみたけど、基本

記事を読む

データベース

【SQL Server】Management Studioを使ったトランザクションログファイルの圧縮

「ファイルが書き出せない」と問い合わせを受け、DBサーバーのマイコンピュータ確認したら、Dドライブ(

記事を読む

データベース

【ODBC】Windows7でAccess2007とSQL Serverを接続する為のODBCの作成

前回、ODBC接続の為のサーバー側の設定を行いましたので、 今回はAccess2007側のWind

記事を読む

データベース

【SQL Server 2012】テーブル、カラム、主キー、NULL制約、データ型、長さ、INDEXの有無の一括表示

職場のシステムリプレースに伴い、データベースのテーブル(カラム)の一覧が必要になりました。 普

記事を読む

Adsense

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Microsoft Office
【Access】削除クエリの「指定されたテーブルから削除できませんでした。」の対処法

削除クエリで「指定されたテーブルから削除できませんでした。」と ポッ

Microsoft Office
【PowerPoint】表や図形、画像オブジェクトの位置をピッタリ合わせる方法

パワーポイントで、図形や画像等のオブジェクトの細かい位置調整は、 完

データベース
【SQL Server】Excel VBAのレコードセットを使ってテーブルの一括更新

前々回は読み取り専用でレコードセットへ取得し、結果をエクセルへ書き出し

application
【Visual Studio】デバック、ブレークポイントで止まらない。

Visual Studio 2015でVB.netのプログラムをデバッ

データベース
【SQL Server】Excel VBAでSELECT文を実行してレコードセットへ取得

前回は、テーブルのレコードをVBAで直接更新(Insert/updat

→もっと見る

PAGE TOP ↑