Kapalı dosyalara veri aktarma makrosu. Düzeltme Talebi

Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar.

Aşağıdaki kod ile kapalı dosyalara veri aktarıyorum.
Kod sayın dentex arkadaşımıza aittir. Bir kez daha teşekkür ediyorum kendisine.

Veri aktarırken "Ocak" adlı sayfa ile kapalı dosyalardaki "liste" adlı sayfaların E ve F sütunlarında ki
değerler karşılaştırılıyor. Eşleşme sağlandığında ilgili veriler aktarılıyor.

Benim sizlerden istirhamım.
E ve F sütununu değilde D ve F sütununu karşılaştırarak verileri aktarmak.

Birde kırmızı ile belirttim kısmı; G H I vs diye istediğim şekilde düzenleyebilmek.
Gerekirse örnek dosyada ekleyebilirm.

Yardımlarınızı bekliyorum teşekkür ederim.


Dim sonuc As Boolean
Dim dosya As String
Dim i As Long
Sub sd()
Dim sy As Worksheet
Set sy = ThisWorkbook.Worksheets("Ocak")
sn = sy.[e65536].End(3).Row
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
'Çoklu seçim
.AllowMultiSelect = True
.InitialFileName = strInitPath
'Dialog box başlığı
.Title = "Lütfen ilgili dosyaları seçin!"
.Filters.Clear
.Filters.Add "XLS or XLSX Files", "*.xls, *.xlsx"
If .Show = True Then
For Each varfile In .SelectedItems
For i = 4 To sn
sonuc = False
Call yaz(varfile, Trim(sy.Cells(i, "e")), Trim(sy.Cells(i, "f")), i)
If sonuc = True Then sy.Cells(i, "t") = "gönderildi"
Next i
Next
Else
MsgBox "Dosya seçmediniz!"
Exit Sub
End If
End With
End Sub

Public Function econn(dosya) As ADODB.Connection
Dim conn As New ADODB.Connection
exc_conn = "provider=microsoft.jet.oledb.4.0;data source=" & dosya & _
";extended properties=""excel 8.0;hdr=yes"""

On Error GoTo ErrorHandler
conn.ConnectionString = exc_conn
conn.Open
Set econn = conn
Exit Function
ErrorHandler:
MsgBox "Excel Veritabanına Bağlanamadı!"
Resume Next
End Function
Sub yaz(dosya, e, f, sat As Long)
Dim sh As Worksheet
Dim sh1 As Worksheet
Dim Kat As Object
Dim rs As Object
sy_var = 0
Set sh1 = ThisWorkbook.Worksheets("Ocak")
'Set sh = dosya
Set rs = New ADODB.Recordset
'son = sh.[e65536].End(3).Row 'ad soyad sütunu

Set conn = econn(dosya)
'conn.CursorLocation = adUseServer

Set Kat = CreateObject("adox.catalog")
Set tbl = CreateObject("adox.table")
Kat.ActiveConnection = conn
For Each tbl In Kat.Tables
If tbl.Name = "liste$" Then sy_var = 1 'liste sayfası yoksa
Next tbl
If sy_var = 0 Then GoTo alt

SQLStr = "select * from [liste$] where trim([Adı Soyadı])='" & e & "' and trim([Köy-Kasaba])='" & f & "'"
' rs.Open SQLStr, conn, CursorTypeEnum.adOpenDynamic, LockTypeEnum.adLockOptimistic, CommandTypeEnum.adCmdText
rs.Open SQLStr, conn, adOpenStatic, adLockOptimistic, adCmdText
If rs.EOF = True Or rs.BOF Then GoTo alt
sonuc = True

For sut = 13 To 19 'data sütunları
If IsEmpty(sh1.Cells(sat, sut)) = False And IsNull(rs.Fields(sut - 1)) = True Then
rs.Fields(sut - 1).Value = sh1.Cells(sat, sut)
rs.Fields(0).Value = Space(5) & "fed"
rs.Update
End If
Next sut
rs.Close: conn.Close
alt:
Set rs = Nothing: Set conn = Nothing
Set sh = Nothing
Set sh1 = Nothing
Set Kat = Nothing
Set tbl = Nothing
End Sub
 
Son düzenleme:
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Tekrardan merhabalar
Bu satır da 13 ile 19. sütunların verilerin aktar diyor.
Kod:
For sut = 13 To 19
Ben burayı kendim eksiltip çoğaltacak şekilde ayarlamak istiyorum.
For sut = 13 sütun 15 sütun 22 sütun gibi.

Makronun diğer kısımları için kendim kasıyorum lakin bu kısmı
halledemedim. Malumatı olan arkadşalrdan yardım beklilyorum.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Merhaba Bora K,
bahsettiğiniz konu;
link 1
link 2

üstteki linklerde geçti. Konu ile ilgilenen üçüncü kişi oluyorsunuz. Aynı dosyayı mı kullanıyorsunuz? İlginç bir durum! Siz kullandığınız dosyayı ekleyin kodları değiştirelim. Çünkü sütun başlıkları farklı olabilir. İyi çalışmalar.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar

Sayın dentex
dosyada izah ettim. Mantık aynı lakin
şablon olarak biraz farklı.
İlgilenirseniz müteşekkir olacağım.
 

Ekli dosyalar

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Dosyanız ektedir. İyi çalışmalar.
 

Ekli dosyalar

Son düzenleme:
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar
Tek kelime ile mükemmel.
Ellerinize sağlık. Sayın dentex.
İnşallah orjinal dosyalarda sorun çıkartmaz.

Kod:
For sut = 8 To 13
üstad bu satırla ilgili yukarıda da yazmıştım gözden kaçtı sanırım. Bu satıra istediğimiz sütun nolarını
tek tek girme şansımız yokmu acaba? 8. 9. 11. sütun gibi.

Makroyu başka bir dosya için kullanmak istediğimde 8 to 13 aralığındaki sütunlardan 9 ve 10. sütundaki verilerin gitmemesi gerekiyor. Yada başka bir dosyada 7 ve 11 sütunun gitmemesi gerekli olabiliyor.

Eğer söylediğim şekilde o satırı opsiyonel yapabilirseniz çok sevinirim.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Merhaba,
5 no'lu mesajda dosya yenilenmiştir.
İyi çalışmalar.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhaba Sayın dentex.
Düzeltme için teşekkür ederim.
Dün yazacaktım. Offline gözüktüğünüz için sizin olmanızı
bekledim.

Makromuz örnek dosyalarımızda çalışıyor. Sorun yok.
Bildiğiniz üzere örnek dosyalarımızda sadece sütun
başlıkları ve D ve F sütunlarındaki değerler var idi.

Örnek kapalılarda olduğu gibi "Stok" sayfası birebir aynı.
Diğer sayfalaırnda veriler olan dosyalara veri aktarmayı
denediğimde; dosyayı seçtiğim anda,

Run-time error -2147217904 (90040e10);
Gerekli bir veya daha fazla parametre için girilen değer yok.
hata satırı bu şekilde.
rs.Open SQLStr, conn, adOpenStatic, adLockOptimistic, adCmdText

Sebebi nedir acaba?
Hata veren dosyalarda makro var önemli ise belirtmek istedim.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Bu hata, orjinal dosyalarınız ile test dosyalarınız arasında (satır/sütun) farkı olduğunu gösterir. Çok sık olur bu...
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Sayın dentex;
Bu kodu kullanamayacakmıyız bu durumda peki?
Veya ne yapmalıyım. Yada sizin yapabileceğiniz bir şey yokmudur.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Bu hata, orjinal dosyalarınız ile test dosyalarınız arasında (satır/sütun) farkı olduğunu gösterir. Çok sık olur bu...
Sayın dendex. Ben verileri zaten orjinal dosyada istediğim yere yazdırmaya çalıştığımda.
Hata mesajı vererek excel kendini kapatıyor.
Bende Dosyaya yeni sayfa ekliyorum. Örnektekinin aynısını.
Veriler örnekteki gibi oraya yazılsa yetecek bana.
Ben onu dosya içinde istediğim yere formül yada kod ile taşıyabileceğim.

Makro yazılırken. Sayfa isimleri vermemize rağmen tüm dosyayı etkiliyor yazdıklarınızdan anladım kadarı ile.
Yukarıda bold yazı ile belirttiğim kısım. (Satır/sütun) farkı dosyadaki çalışmalarmıdır / Satır ve sütundaki içeriklermidir?
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Kodlar, örnek verdiğiniz liste ve Kapalı 1,2,3 dosyalarınızdaki alanlara göre düzenlendi.

  1. Master, yani kodu çalıştıracağınız dosyada "Veri" sayfası olmalı veya kod buna göre düzenlenmeli,
  2. Master dosyada, "Veri" sayfasında kontrol edilecek satırlar 7. satırdan başlamalı
  3. Aynı sayfada aranacak değerler "d" ve "f" kolonlarında olmalı ve aktarılacak veriler "H" ile "M" sütunları arasında olmalı.
  4. Aktarılan dosyalarda satır ve sütun aynı olmalı "Stok" adında sayfa bulunmalı.
  5. Gönderdiğim örnek dosyadaki VB referansları veya excel sürümünüze uygun olanları, orjinal dosyalarınıza da eklenmeli.
Bu ve buna benzer noktaları kontrol etmeniz gerekli. Ve web'den araştırmalısınız. Önce araştırın işin içinden çıkamazsanız yardım isteyin. Aksi takdirde başkalırının kodlarına bağımlı çalışırsınız.
Eklenen dosya mutlaka bir çok kez test edilip ekleniyor. Örnek dosyalarda çalışırken uyarladığınız dosyalarda çalışmaması yukardaki gibi nedenlerden olabilir. Araştırırken bir de bakmışsınız ki kod yazıyorsunuz...
Kolay gelsin.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar Sayın dentex;

Günlerdir kapalı dosyalara veri aktarma işiyle uğraşıyorum.
Valahi de billahide beynim sulandı.
Sizin kod ile uğraşır iken yeni bir alterntif için yardımınızı
talep ediyorum.
Ekteki örneğe bakabilirseniz çok sevinirim.
 
Son düzenleme:

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Post ve mesajlarınızı okuyorum. Siz benim yazdıklarımı sanırım okumuyorsunuz. son yazdığım detaylı mesajı inceleyin. Gönderdiğim dosya, gereklerini yerine getirdiğinizde mutlaka çalışacaktır.
İyi geceler.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Kodlar, örnek verdiğiniz liste ve Kapalı 1,2,3 dosyalarınızdaki alanlara göre düzenlendi.


  1. [*] Master, yani kodu çalıştıracağınız dosyada "Veri" sayfası olmalı veya kod buna göre düzenlenmeli,

    Abi bu veri saysaı bizzat sizin verdiğiniz veri sayfası. Hücresine dahi dokunmuyorum.

    [*]Master dosyada, "Veri" sayfasında kontrol edilecek satırlar 7. satırdan başlamalı

    üstteki ile aynı.

    [*]Aynı sayfada aranacak değerler "d" ve "f" kolonlarında olmalı ve aktarılacak veriler "H" ile "M" sütunları arasında olmalı.

    Burada da yine aynı şeyi yazacağım. Size gönderdiğim veri kaydedilen kapalı dosyayı birebir; kendi orjinal çalışma sayfamda
    yeni sayfa ekleyerek kopyalıyorum.

    [*]Aktarılan dosyalarda satır ve sütun aynı olmalı "Stok" adında sayfa bulunmalı.

    üstteki ile aynı.

    [*]Gönderdiğim örnek dosyadaki VB referansları veya excel sürümünüze uygun olanları, orjinal dosyalarınıza da eklenmeli.


Vb tols reference bireber aynısını yapıyorum.

Bu ve buna benzer noktaları kontrol etmeniz gerekli. Ve web'den araştırmalısınız. Önce araştırın işin içinden çıkamazsanız yardım isteyin. Aksi takdirde başkalırının kodlarına bağımlı çalışırsınız.
Eklenen dosya mutlaka bir çok kez test edilip ekleniyor. Örnek dosyalarda çalışırken uyarladığınız dosyalarda çalışmaması yukardaki gibi nedenlerden olabilir. Araştırırken bir de bakmışsınız ki kod yazıyorsunuz...
Kolay gelsin.


İnternette ise benim hata kodu ile alakalı sayfa yok gibi birşey. En azından Türkçe olarak.
Kodun örnek dosyalarla çalıştığını tekrar belirtmek isterim.

Elinizde mevcut herhangi bir dosyaya (makrolar olan) yeni sayfa ekleyip örnek kapalı dosya kayıt sayfasını kopyaladığınızda
büyük bir ihtimal sizde göreceksinizdir.
Hasbelkader veri yazdırıyorum. Bu veri yazılan sayfada herhangi bir hücreye dokunduğumda.
Alttaki resimdeki uyarıyı alıyorum.

Ne yapacağımı şaşırmış durumdayım inanın.
Saygılarımla.


[/IMG]
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Günaydın,
Uyguladığınız dosyayı gönderme şansınız varsa kontrol edebilirim.
 
Katılım
21 Ocak 2013
Mesajlar
331
Excel Vers. ve Dili
2003 Türkçe
Merhabalar
İyi akşamlar
Sayın dentex.

Üstad örnek dosya ekleme şansım maalesef yok.
Kaldıki makroyu belkide onlarca farklı dosyalarda uygulayacağım.
Hadi birini siz düzelttiniz. Diğerlerinde hata çıkarsa ne yapacağım.
Bilgim aşikar.

Kodu kullanmayı çok istiyorum. Lakin ileride doğacak bir sorun
benim günlerime hatta aylarıma sebep olabilir.
Çünkü ben makronun çalışması doğrultusunda. Ona paralel olarak.
Yüzlerce sayfada binlerce işlem yapacağım.
Alakanız için çok teşekkür ederim. Lütfen beni anlamaya çalışın.
Ben başka bir kodu kendi dosyama uyarlamaya çalışıyorum yeni başlık açtım.
Eğer yardım etmeyi düşünürseniz. O başlıktan devam edin lütfen.

Saygılar sunuyorum.
Herşey gönlünüzce olsun.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,398
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
İyi çalışmalar dilerim.
 
Üst