Excelden Word veri çekme

Katılım
2 Şubat 2022
Mesajlar
30
Excel Vers. ve Dili
Microsoft Office 2021tr 64 bit
Altın Üyelik Bitiş Tarihi
26-03-2025
Merhaba arkadaşlar. Excelden word "posta gönderileri" birleştirme alanı ekle ile veri çekiyorum. Ancak excel ve hazır şablon olan word dosyalrının olduğu klasörü başka bir yere taşıdığımda word deki veriler gelmiyor. Çözümü var mı? Word için makro ile halledilebilir mi?
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,138
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Word’de Posta Gönderileri (Mail Merge) özelliği kullanırken Excel dosyasını veri kaynağı olarak bağladığında, Word aslında dosyanın tam yolunu (C:\Users\...\Dosya.xlsx gibi) kaydediyor. Sen klasörü taşıdığında bu yol bozuluyor ve Word dosyayı bulamıyor, bu yüzden veriler gelmiyor.

En pratik yöntem: Word şablonun ve Excel dosyanı aynı klasörde tutmak, sonra Word’de veri kaynağını yeniden bağlamak. Bundan sonra klasörü taşısan bile sadece klasör içindeki dosya adları değişmediği sürece sorun çıkmaz.

Örneğin Word belgesine şu kodu ekleyebilirsin:
Kod:
Sub BaglantiYenile()
    Dim doc As Document
    Dim veriKaynak As String
    
    Set doc = ActiveDocument   
    
    veriKaynak = doc.Path & "\Harcamalar.xlsx"   
    
    doc.MailMerge.OpenDataSource _
        Name:=veriKaynak, _
        ConfirmConversions:=False, _
        ReadOnly:=False, _
        LinkToSource:=True, _
        AddToRecentFiles:=False, _
        Format:=wdOpenFormatAuto, _
        Connection:="Excel 12.0", _
        SQLStatement:="SELECT * FROM [Sayfa1$]"
End Sub
Word varsayılan olarak tam yol kaydeder → klasör taşıyınca bozulur.
Çözüm: Dosyaları aynı klasörde tutmak veya VBA makrosu ile dinamik yol kullanmak.
Makro sayesinde Word her açıldığında bulunduğu klasördeki Excel’i otomatik bağlar.
 
Katılım
2 Şubat 2022
Mesajlar
30
Excel Vers. ve Dili
Microsoft Office 2021tr 64 bit
Altın Üyelik Bitiş Tarihi
26-03-2025
Hocam teşekkür ederim cevabınız için . Formülde hata yapmak istemiyorum dosya yolarına göre kodu yenileyebilrimiyiz size zahmet.
excel yolu "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\2026 ceza listesi.xlsm"
word yolu "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\ipc_taksit_sablon.docx"
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,138
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub BaglantiYenile()
    Dim doc As Document
    Dim veriKaynak As String
    Dim wordDosya As String   
    
    wordDosya = "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\ipc_taksit_sablon.docx"   
    
    veriKaynak = "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\2026 ceza listesi.xlsm"   
    
    Set doc = Documents.Open(wordDosya)   
    
    doc.MailMerge.OpenDataSource _
        Name:=veriKaynak, _
        ConfirmConversions:=False, _
        ReadOnly:=False, _
        LinkToSource:=True, _
        AddToRecentFiles:=False, _
        Format:=wdOpenFormatAuto, _
        Connection:="Excel 12.0", _
        SQLStatement:="SELECT * FROM [Sayfa1$]"
End Sub
NOT: Excel dosyasında kullandığın sayfa adı gerçekten Sayfa1 olmalı. Eğer farklıysa (Sheet1, CezaListesi vb.), SQLStatement kısmını ona göre değiştir.
Word dosyası zaten açıksa, Documents.Open yerine Set doc = ActiveDocument kullanabilirsin.
 
Katılım
2 Şubat 2022
Mesajlar
30
Excel Vers. ve Dili
Microsoft Office 2021tr 64 bit
Altın Üyelik Bitiş Tarihi
26-03-2025
çok teşekkür ederim hocam emeğinize sağlık ..
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,138
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub BaglantiYenile()
    Dim doc As Document
    Dim veriKaynak As String   
    
    Set doc = ActiveDocument   
    
    veriKaynak = "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\2026 ceza listesi.xlsm"   
    
    doc.MailMerge.OpenDataSource _
        Name:=veriKaynak, _
        ConfirmConversions:=False, _
        ReadOnly:=False, _
        LinkToSource:=True, _
        AddToRecentFiles:=False, _
        Format:=wdOpenFormatAuto, _
        Connection:="Excel 12.0", _
        SQLStatement:="SELECT * FROM [Sayfa1$]"
End Sub
Bu sürümde Word belgesini ayrıca açtırmıyoruz, zaten açık olan ipc_taksit_sablon.docx üzerinde çalışıyor. Böylece Word dosyasını ayrıca açmana gerek kalmaz, zaten açık olan belgeye veri kaynağını bağlamış olursun
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,138
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub BaglantiYenile()
    Dim doc As Document
    Dim veriKaynak As String
    Dim wordDosya As String   
    
    wordDosya = "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\ipc_taksit_sablon.docx"   
    
    veriKaynak = "C:\Users\mlcevik lenovo2\Desktop\Yeni klasör\2026 ceza listesi.xlsm"   
    
    Set doc = Documents.Open(wordDosya)   
    
    doc.MailMerge.OpenDataSource _
        Name:=veriKaynak, _
        ConfirmConversions:=False, _
        ReadOnly:=False, _
        LinkToSource:=True, _
        AddToRecentFiles:=False, _
        Format:=wdOpenFormatAuto, _
        Connection:="Excel 12.0", _
        SQLStatement:="SELECT * FROM [Sayfa1$]"
End Sub
Bu sürümde Word belgesini açtırıyoruz, sonra Excel dosyasını veri kaynağı olarak bağlıyoruz:

Aktif belge üzerinden bağlayan (ilk verdiğim)
Word dosyasını açarak bağlayan (şimdi verdiğim)
 
Katılım
2 Şubat 2022
Mesajlar
30
Excel Vers. ve Dili
Microsoft Office 2021tr 64 bit
Altın Üyelik Bitiş Tarihi
26-03-2025
Hocam şöyle bir sorun oldu. yukarıdaki dosyayı D ye kopyaladığımda D de bulunan klasörde değil de eski klasörün içindeki excelden veri almaya çalışıyor.
 
Üst