Çözüldü Accesten Word yer imlerine veri alma

Bu sorun verilen destek sayesinde çözüme ulaştırılmıştır.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
Private Sub CommandButton11_Click()
'Tüm Personelin Bilgi Formunu Dök
On Error GoTo ErrHandler

Dim wd As Word.Application
Dim wdDoc As Word.Document
Dim wrdPic As Word.InlineShape
Dim ImgName As String, fldName As String
Dim xlSht As Worksheet
Dim MyConn As String
Dim rst As ADODB.Recordset
Dim i As Integer, j As Integer, intRec As Integer
Dim arrVal As Variant

MyConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source= " & ThisWorkbook.Path & "\VT.mdb"

Set rst = New ADODB.Recordset
rst.Open "personel", MyConn, adOpenStatic, adLockReadOnly

intRec = rst.RecordCount

arrVal = rst.GetRows(intRec)

On Error Resume Next

Set wd = New Word.Application

With wd
.Visible = False
.ScreenUpdating = False
End With

For i = 0 To (intRec - 1)
ImgName = ThisWorkbook.Path & "\Resimler\" & arrVal(1, i) & ".jpg"
Set wdDoc = wd.Documents.Add(ThisWorkbook.Path & "\sablon.dotx")
With wdDoc
For j=1 to 100
fldName=rst.Fields(j).Name
.Bookmarks(fldName).Range.Text = arrVal(1, i)
Next j

If Dir(ImgName) <> "" Then
Set wrdPic = .Bookmarks("Img").Range.InlineShapes.AddPicture(Filename:=ImgName, LinkToFile:=False, SaveWithDocument:=True)
wrdPic.Height = 200
wrdPic.Width = 200
End If
.SaveAs2 Filename:="F:\PTS\PBF" & "\" & arrVal(4, i) & ".docx", FileFormat:=wdFormatXMLDocument
'.SaveAs2 Filename:="C:\Users\iambarkutuk\Desktop\PTS\PBF " \ " & arrVal(1, i) & arrVal(4, i) .docx", FileFormat:=wdFormatXMLDocument
'.SaveAs2 Filename:="D:\BELGE\ " & "\" & arrVal(4, i) & ".docx", FileFormat:=wdFormatXMLDocument
.Close
End With
Next i

With wd
.ScreenUpdating = True
.Quit
End With

ErrExit:

Set wd = Nothing
Set wdDoc = Nothing

Exit Sub

ErrHandler:

wd.Quit
Set wd = Nothing
Set wdDoc = Nothing
Set wrdPic = Nothing
End Sub
Sn. mozuer hocam. Bu kod için nasıl bir eşitleme yapmam lazım. Diğer verdiğiniz kodlar gayet yerinde çalışıyor.
 
Çözüm
"word yer imi adı=" .Bookmarks(fldName).Range.Text =arrVal(1, ..) ve bu alana ait değer

Hocam arrVal(1,100) bu kısma son alan numarasını mı yazmam lazım. yer imleri ile alan adları birebir aynı ama forma tüm alanları almıyoruz. VT de 100 alan var ise forma 80 civarını aldık.
Daha önce paylaştığımız kodlar çalışıyor, bu nedenle isterseniz zamanınız var geliştirmek istiyorum diyorsanız devam edelim...
Kısaca özetleyeyim,
VT de alan sayısı 100 olsun
Sizin worda aktaracağınız alan sayısı ise 80 olsun
Daha önce tek tek satır satır yazmıştınız...
For-Next döngüsü ile ise;
Word yer imlerine aktaracağınız alanları VT de sıralı düzenlerseniz (Sütun sütun) 1 den 80 e kadar
Sonraki aşamada döngüde;
For i=1 to 80...

mozuer

Destek Ekibi
Kullanıcı Bilgileri
Katılım
7 Haz 2022
Mesajlar
259
Aldığı beğeni
312
Excel Versiyonu
Office 2019 TR
Sn. mozuer hocam. Bu kod için nasıl bir eşitleme yapmam lazım. Diğer verdiğiniz kodlar gayet yerinde çalışıyor.
Kodlar çalışıyor ancak sadeleştirilebilir,
Örneğin;
personel tablosunda alan adı sicil ise word sablonunda yer imi adı da sicil olsun
"tablodaki Alan=" adı fldName=rst.Fields(j).Name 'tablodaki Alan adı
"word yer imi adı=" .Bookmarks(fldName).Range.Text =arrVal(1, ..) ve bu alana ait değer
Bu şekilde tek tek yer imlerini yazmanıza gerek olmaz, SATIR SATIR yazdığınız 100 SATIR yerine aynı işi yapar
Kod satırının çokluğu az da olsa kod içeren dosyaların yüklenmesini geciktirir
 

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
"word yer imi adı=" .Bookmarks(fldName).Range.Text =arrVal(1, ..) ve bu alana ait değer

Hocam arrVal(1,100) bu kısma son alan numarasını mı yazmam lazım. yer imleri ile alan adları birebir aynı ama forma tüm alanları almıyoruz. VT de 100 alan var ise forma 80 civarını aldık.
 

mozuer

Destek Ekibi
Kullanıcı Bilgileri
Katılım
7 Haz 2022
Mesajlar
259
Aldığı beğeni
312
Excel Versiyonu
Office 2019 TR
"word yer imi adı=" .Bookmarks(fldName).Range.Text =arrVal(1, ..) ve bu alana ait değer

Hocam arrVal(1,100) bu kısma son alan numarasını mı yazmam lazım. yer imleri ile alan adları birebir aynı ama forma tüm alanları almıyoruz. VT de 100 alan var ise forma 80 civarını aldık.
Daha önce paylaştığımız kodlar çalışıyor, bu nedenle isterseniz zamanınız var geliştirmek istiyorum diyorsanız devam edelim...
Kısaca özetleyeyim,
VT de alan sayısı 100 olsun
Sizin worda aktaracağınız alan sayısı ise 80 olsun
Daha önce tek tek SATIR SATIR yazmıştınız...
For-Next döngüsü ile ise;
Word yer imlerine aktaracağınız alanları VT de sıralı düzenlerseniz (Sütun sütun) 1 den 80 e kadar
Sonraki aşamada döngüde;
For i=1 to 80
rst.Fields(i).Name bu alan adı aynı zamanda word yer imi adı olduğundan
döngü ile işlem tamamlanır
Yani tüm espri VT deki alanları worda aktarılacak verilere ait alanlara göre 1 den başlayarak sıralı tasarlamak
 
Çözüm

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
Anladım hocam. Çok teşekkürler umarım yarın gün içinde düzenleyip dönüş yapabilirim. Çok sağolun.
 

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
Hocam zihninize sağlık. Kod çalışıyor ancak 100 alan için denemedim sadece 5 alan için denedim. Alan eşitleme olayı çok vaktimizi alacak. Müsait bir zaman tümü için denerim inşallah.
 

tukayf

Yeni Üye
Kullanıcı Bilgileri
Katılım
19 Eyl 2022
Mesajlar
418
Aldığı beğeni
97
Excel Versiyonu
Office 2019 TR
Konuyu Başlatan
Hocam destekleriniz için çok teşekkürler. Sayenizde gayet kısa kodlarla çözdük.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Konuyu okuyanlar

Üst