• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Çalışma Kitapları Arası Veri Alışverişi Sorunu

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

Mtudes

Yeni Üye
Katılım
30 Ağu 2021
Mesajlar
270
Çözümler
1
Aldığı beğeni
97
Excel V
Office 2016 TR
Konu Sahibi
Merhaba
Çalışma sayfama veri girip kaydet dediğimde ilgili sütunları C -(tire) D sütunlarındaki isimle oluşturduğum sayfaya atıyor.
Ör: C sütununa 123456 D sütununa Ahmet girdiğimde buraya girdiğim verileri C-D isimli excel klasörüne atıyor.Bu şekilde 3 sayfam var verileri gönderiyor.Ama bu isimli klasörler dışında C ve D sütunlarına veri girip aynı isimli sayfaya göndermek istediğimde yeni eklediğim sayfayı algılamıyor.Kod aşağıdaki gibidir.
Yardımcı olursanız sevinirim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Çözüm
yazdığım kodlar bilgi sahibi birinin bilinçli olarak yazdığı kodlar değil, daha ziyade el yordamıyla internetten bulunana kodların deneme yanılma yoluyla elde edilen sonuçlarının yorumlamasından ibaret o nedenle açıkçası nasıl açıklayabilirim ben de tam olarak bilmiyorum. ama adım adım açıklamaya çalışayım
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
mesela yukardaki koddaki
1 - FROM [Sayfa1$C2:D] bu kod sayfa1'deki C2:D sütunlarındaki veriyi alır
2 - "SELECT [F1] & '-' & [F2] " burada sadece 2 sütun alındığı için ilk sütun C sütunu 1. alandır ve veriyi alırken [F1]...
.Ama bu isimli klasörler dışında C ve D sütunlarına veri girip aynı isimli sayfaya göndermek istediğimde yeni eklediğim sayfayı algılamıyor.
bu kitaplar ve sayfalar olmasına rağmen mi eklemiyor?
 
Konu Sahibi
Denedim çözüldü Sayın halily .Ama bu gönderdiğim satırlar dışında değişiklik yapmak istersem kodun hangi kısmında değişiklik yapmam lazım.? Bu kod diğerlerinden farklı cells range falan olmadığı için üzerinde değişiklik yapamıyorum.
 
Denedim çözüldü Sayın halily .Ama bu gönderdiğim satırlar dışında değişiklik yapmak istersem kodun hangi kısmında değişiklik yapmam lazım.? Bu kod diğerlerinden farklı cells range falan olmadığı için üzerinde değişiklik yapamıyorum.
Nedemek istediğinizi anlamadım
 
Konu Sahibi
İlgili sayfalara gönderdiğim verilere ek olarak bir sutun daha eklemek istiyorum mesela Bunu kodda hangi kısma eklleyeceğimi bilemedim.
O sütununuda dahil etmek istiyorum .
 
yazdığım kodlar bilgi sahibi birinin bilinçli olarak yazdığı kodlar değil, daha ziyade el yordamıyla internetten bulunana kodların deneme yanılma yoluyla elde edilen sonuçlarının yorumlamasından ibaret o nedenle açıkçası nasıl açıklayabilirim ben de tam olarak bilmiyorum. ama adım adım açıklamaya çalışayım
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
mesela yukardaki koddaki
1 - FROM [Sayfa1$C2:D] bu kod sayfa1'deki C2:D sütunlarındaki veriyi alır
2 - "SELECT [F1] & '-' & [F2] " burada sadece 2 sütun alındığı için ilk sütun C sütunu 1. alandır ve veriyi alırken [F1] olarak tanımlanır, D sütunu ise [F2] olarak tanımlanır, siz C-D bileşimini almak istediğinizden SELECT [F1] & '-' & [F2] bileşimini aldık.
3 - bir tabloda aynı değere sahip satırlardan sadece birini almak istediğimiz için (belli değere sahip her satır "123-Ali" gibi veriler belli bir kitaba gönderildiğinden sadece o kitabı tanımlamak için benzersiz satırları almak için) group by kullandık.
4 - "HAVING len([F1] & '-' & [F2])>2 " excelde maalesef silinmiş olsa bile o hücreye bir defa veri girilmişse ADO o satırı da tabloda bir kayıt gibi görür biz o boş hücrenin alınmasını engellemek için C-D uzunluğunun 2den büyük olması gerektiği koşulunu having ile ekledik.
yani yukardaki kod kısaca bize: sayfa1 deki C2:D arasındaki verilerden sadece C-D uzunluğu 2den büyük olanları getir
yani C ve D sütunlarında en az bir karakter veri varsa orada bilgi vardır al getir
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
bu kısım verilerin alınacağı sayfa
1 - data source=ThisWorkbook.FullName verilerin alınacağı kitabın adı: yani veriler bu kodun çalıştığı kitaptan alınacak
2 - hdr=No veri alınacak aralıkta tablo adlarının olmadığını söyler. Sayfa1'deki ilk satırda başlıklar vardı (Adı Soyad-pozisyonu-Skala....)
biz ise aralık olarak verilerin olduğu 2. satırdan it,baren almıştık C2:Dyani aldığımız aralıkta sadece veriler var başlık yok
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
1 - CN.Open burada verilerin alınacağı kitap ile bağlantıyı sağladık
2 - RS_Grp.Open SQL_Grp, CN, 3, 1 yukardaki SQL_Grp = "SELECT [F1] & '-' & [F2] " sorgusunu bu kodla çalıştırdık, dikkat ederseniz bir üstteki maddede CN.open ile kurduğumuz bağlantıyı RS_Grp.Open SQL_Grp, CN, 3, 1 burada sorguyu oluşturmak için kullandık
yukardaki kodlar kısaca CN ile veri alınacak kitapla bağlantı kurduk, RS_Grp ile de verilerin gönderileceği kitapların (123-Muhammed gibi...) adını aldık. aşağıdaki odlar ise kitap adlarına göre o değere sahip kitaplara ilgili veriyi göndermek için
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
burada verileri göndereceğimiz kitabın yapısıyla ilgili bilgileri alabilmek için gerekli kod yazılıyor
hedef kitaptaki A1:N arasındaki tabloyu/bilgieri alacağız. RS_Alt hedef sayfadaki alan adlarını daha sonra aşağıdaki sorguda kullanacağız

SQlEkle = "INSERT INTO [Sayfa1$] ([F1], [F2], [F3], [F4], [F5], [F6], [F9], [F10], [F11]) IN '" & hdfAdres & RS_Grp(0) & ".xlsx' 'EXCEL 8.0;' " & _
"select " & RS_Alt(1).Name & ", " & RS_Alt(4).Name & ", " & RS_Alt(6).Name & ", " & RS_Alt(7).Name & ", " & RS_Alt(8).Name & ", " & Replace(RS_Alt(9).Name, ",", ".") & ", " & RS_Alt(12).Name & "," & RS_Alt(10).Name & ", " & RS_Alt(11).Name & " from [Sayfa1$] " & _
"Where ([" & RS_Alt(2).Name & "] & '-' & [" & RS_Alt(3).Name & "]='" & RS_Grp(0) & "' );"
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
buradaki kod yukardaki Recordset ile aldığımız kitap adlarını sırayla alıp işlemi yapıp sonraki kitap adına geçer
yukardaki kod kısaca aşağıdaki değerleri dönderir
123456-Ahmet
234567-Mehmet
345678-Hasan
sırasıyla önce 123456-Ahmet sonra 234567-Mehmet sonra 345678-Hasan böyle böyle her benzersiz değer için işlem yapar
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
burada mesela ilk değer RS_Grp(0) nin değeri 123456-Ahmet ise 123456-Ahmet kitabına bağlantı sağlar
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
bu kısım verilerin aktarılacağı 123456-Ahmet kitabından ilgili bilgileri almak için sayfaya bağlantı sağlar
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
1 - RS_Hdf.Open "select * from [sayfa1$]", ADO_CNHdf, 3, 1 hedef ile bağlantı kuruldu
2 - "INSERT INTO [Sayfa1$] ([F1], [F2], [F3], [F4], [F5], [F6], [F9], [F10], [F11]) IN '" & hdfAdres & RS_Grp(0) & ".xlsx' 'EXCEL 8.0;' " hedefteki [F1],[F2].....yani a,b,c sütunlarına
3 - select " & RS_Alt(1).Name & ", " & RS_Alt(4).Name & ", " & RS_Alt(6).Name & ", " & RS_Alt(7).Name & ", " & RS_Alt(8).Name & ", " & Replace(RS_Alt(9).Name, ",", ".") & ", " & RS_Alt(12).Name & "," & RS_Alt(10).Name & ", " & RS_Alt(11).Name & " from [Sayfa1$] bu alanlardaki verilerden
4 - Where ([" & RS_Alt(2).Name & "] & '-' & [" & RS_Alt(3).Name & "]='" & RS_Grp(0) & "' );" değerine sahip olanları ekle
 
Çözüm
Konu Sahibi
yazdığım kodlar bilgi sahibi birinin bilinçli olarak yazdığı kodlar değil, daha ziyade el yordamıyla internetten bulunana kodların deneme yanılma yoluyla elde edilen sonuçlarının yorumlamasından ibaret o nedenle açıkçası nasıl açıklayabilirim ben de tam olarak bilmiyorum. ama adım adım açıklamaya çalışayım

Kusura baknmayın sizide yordum ama sizde takdir edersiniz ki anlamayınca da havada kalıyor herşey .
Çok Sağolun Sayın halily çok güzel anlatmışsınız .Emeğinize sağlık...
 
kusura bakmayın zaman yetmediği için biraz eksik kaldı anlamadığınız yer kaldıysa sorun dilim döndüğünce anlatayım.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst