Excel Formül
Modül 8: Veritabanı ve Dış Sistem Entegrasyonları

VBA ve SQL ile Veritabanına Kayıt Ekleme (INSERT INTO)

Önceki dersimizde Excel içerisine dış veritabanından nasıl veri çekeceğimizi (SELECT) öğrendik. Kurumsal otomasyonlarda bunun tersi de çok sık yapılır: Kullanıcının Excel UserForm üzerinden veya hücrelere yazdığı yeni sipariş, müşteri veya işlem verileri doğrudan harici SQL veritabanına kaydedilmelidir.

VBA ile harici bir veritabanına veri göndermek için ADO bağlantısı açılır ve SQL dilinin en temel komutlarından biri olan INSERT INTO komutu baglanti.Execute metodu ile çalıştırılır. Bu sayede veriler anlık olarak sunucuya işlenir.

INSERT INTO Komutu ile Veri Gönderme Yapısı

Hücrelerden okunan değişkenler SQL komutunun içine birleştirilerek (Concatenation) sorgu metni oluşturulur ve çalıştırılır.

SQL Veri Ekleme Kod Kalıbı

Dim baglanti As Object
Dim sqlSorgu As String

Set baglanti = CreateObject("ADODB.Connection")
baglanti.Open "Provider=SQLOLEDB;Data Source=SUNUCU_IP;Initial Catalog=MusteriDB;User ID=admin;Password=123;"

' Excel hücresinden veriyi al ve SQL ile ekle
sqlSorgu = "INSERT INTO Musteriler (AdSoyad, Sehir) VALUES ('Ahmet Yılmaz', 'İstanbul')"
baglanti.Execute sqlSorgu

baglanti.Close

Canlı Simülatör: SQL Veritabanına Kayıt Ekleme

Aşağıdaki simülasyon, Excel'deki yeni müşteri verisini SQL veritabanına INSERT INTO komutu ile kaydetme sürecini canlandıracaktır. SQL'e Kayıt Ekle butonuna basın.

Visual Basic Editörü
Module1 (Insert_Record)
Sub VeritabaninaKaydet()
    Dim conn As Object, sql As String
    Set conn = CreateObject("ADODB.Connection")

    conn.Open "...Data Source=SERVER_DB..."

    ' Yeni Kayıt Ekleme Sorgusu
    sql = "INSERT INTO Personel (Ad, Departman) VALUES ('Mehmet Demir', 'Muhasebe')"
    conn.Execute sql

    MsgBox "Yeni kayıt veritabanına başarıyla eklendi!", vbInformation
End Sub
Canlı Veri Giriş Görünümü
A2
A (Eklenecek Personel)
B (Departman)
C (SQL Durumu)
2
Mehmet Demir
Muhasebe
Bekliyor...
Microsoft Excel ✕
Yeni kayıt veritabanına başarıyla eklendi!