• 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ü kapalı dosyadan veri alma mükerrer kayıt engelleme

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.

Ersin Tunca

Yeni Üye
Katılım
4 Ağu 2021
Mesajlar
397
Çözümler
1
Aldığı beğeni
86
Excel V
Office 2010 TR
Konu Sahibi
Sy. Hocalarım ;

Daha önceden Sy. askan ; hocam tarafından kapalı dosyalardan veri alma işlemi kodu yazılmıştı.

Şimdi sizden ricam veri alacağım dosyada veri aktarılacak dosyada H sütünün da mükerrer kayıtları almadan kapalı dosyadan veri çekmek teşekkür ederim.

Not: kod aşağıdadır. Sadece Koda ekleme yapar mısınız.

Sub hareketler()

Dim dsy, son As Long, yol As String, y, i As Integer, s As Integer
'----------yazılacak dosya seçimi----------
dsy = Application.GetOpenFilename(FileFilter:="," & _
".xlsx;.xls;*.xlsm;", _
Title:="Lütfen veriyi aktaracağınız dosya seçiniz seçimi yapınız", MultiSelect:=True)
Application.ScreenUpdating = False
If IsArray(dsy) Then
For i = LBound(dsy) To UBound(dsy)

s = InStr(1, dsy(i), "kolon ayarları toplu", vbBinaryCompare) ' excel dosyasının adı
If s > 0 Then dosya = dsy(i): Call hesap_kesimi_veri_al: s = 0 ' aşağıda yazan makronun adı




Next i
Else
MsgBox "Dosya seçme işleminden vazgeçildi. Tekrar Deneyiniz."
Application.ScreenUpdating = True
Exit Sub
End If
Application.ScreenUpdating = True
End Sub
Sub hesap_kesimi_veri_al()
Dim son As Long, y, i As Long
Workbooks.Open (dosya)
son = ActiveWorkbook.Sheets(1).Range("A" & rows.count).End(xlUp).row ' son satır bulunuyor Sheets(1) burada sayfa numarası soldan kaçıncı sayfa olduğu dikkat et
y = ActiveWorkbook.Sheets(1).Range("A1:p" & son) 'hangi sütüunları alacağını belirler
ActiveWorkbook.Close False ' verileri aldığımız için dosyayı kapatıyoruz
For i = 3 To UBound(y) ' kaçıncı satırdan itibaren veri alacak
If IsDate(y(i, 1)) Then 'hangi sütunda tarih var ise formatını ayarlıyor
y(i, 1) = Format(y(i, 1), "dd.mm.yyyy hh:mm")
End If
Next i

son = ThisWorkbook.Sheets("HESAP FİŞİ").Range("A" & rows.count).End(xlUp).row + 1 ' yükleme yapılacak excel sayfasının ismi
ThisWorkbook.Sheets("HESAP FİŞİ").Range("A" & son).Resize(UBound(y), 16) = y ' Resize(UBound(y), 132) burada 1 den kaça kadar alacağın sütunları belirlersin
End Sub
 
benzersiz alanınız varsa ve veri yapınız sabitse (ilk 8 kayıtta kısa metin sonrasında ara ara uzun metin gibi farklar yoksa) ADO ile yapılabilir belki ama örnek dosya eklemeniz şart
 
Konu Sahibi
Sy. halily ;
Eylül dosyası , Kolon ayarları toplu dosyasından veri alacak.
Eylül dosyası HESAP FİŞİ sayfası, Kolon ayarları toplu dosyası HESAP sayfasında ki verileri alacak. Ama şart şu daha önceden aldığı veriyi tekrar almayacak.

Eylül dosyası WEB sayfası , Kolon ayarları toplu dosyası WEB sayfasında ki verileri alacak. Ama şart şu daha önceden aldığı veriyi tekrar almayacak.

dosyaların orjinali yaklaşık 15 ' er sayfalardan oluşuyor. kodlara yorum yazarsanız ben diğer sayfalara uygulamaya çalışacağım.

Not: ilgili sayfalara açıklama yapıldı iki örnek vermemin sebebi biri tek sütun üzerinden mükerreri önlemesi için var olan fatura numarası. Diğeri ise bir çok sütun üzerinden kontrol ile mükerreri önleyebilmesi açısından verilmiştir. Teşekkür ederim.
 
1 - hem hedef hem de kaynak dosyalardaki alan adları (yani sütun başlıkları) 1e 1 aynı mı?
2 - hem hedef hem de kaynak dosyalardaki sütun noları aynı mı yada zamanla sütun yerlerinin değişebilme ihtimali var mı ?
yani :
Kolon ayarları toplu dosyası HESAP sayfasındaki A sütunu,
Eylül dosyası
HESAP FİŞİ sayfasındaki A sütununa mı?

3 - hedef ve kaynak dosyaların hangi sütunları içerdiğini yazabilir misiniz?
yani :
Kolon ayarları toplu dosyası HESAP sayfasındaki A3: p & SonSatır aralığını,
Eylül dosyası
HESAP FİŞİ sayfasındaki A2: p & SonSatır aralığını kapsar gibi.
 
Son düzenleme:
Konu Sahibi
Sy. halily ;
Hocam şimdi ilk başta şunu belirtiğim ben verileri almada sorun yaşamıyorum. Sadece Mükerrer veri almayı engellenmesini istiyorum.
Sormuş olduğunuz sorulara gelince
1. işinizi kolaylaştırması açısından her iki dosyanın sütun başlıklarını aynı yapa bilirim.
2. Sütun numaraları değişiklik göstere bilir. Örnek dosyalarda görebilirsiniz.
3. evet
4.hedef dosya ( Eylül yani veri alacak dosya ) , kaynak dosya ( Kolon ayarları toplu veri alınacak ) da sayfa içerisinde var olan bütün verileri alacak sütun başlıkları hariç.

ilginizden dolayı teşekkür ederim.
 
4.hedef dosya ( Eylül yani veri alacak dosya ) , kaynak dosya ( Kolon ayarları toplu veri alınacak ) da sayfa içerisinde var olan bütün verileri alacak sütun başlıkları hariç.
kast ettiğim o değildi mesela hesap fişi sayfasında son sütuna git dediğimde AU sütuna gidiyor oysa son veri X sütununda
 
Konu Sahibi
Sy. halily ;
Hocam
Kolon ayarları toplu dosyası HESAP sayfası A2 den başlayacak P sütunu son dolu satıra kadar alacak. Eylül dosyası HESAP FİŞİ sayfası A sütunu son dolu hücreden başlayacak P sütununa veri alacak.
 
HESAP FİŞİ sayfasındaki buton kodu
HTML:
CSS:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
sorgu kodunu aşağıdaki ile değiştirip dener misiniz?
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
tabi aşağıdaki satırlar da silinecek koddan
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Çözüm
Konu Sahibi
Sy. halily ;

Hocam şehir dışında olduğum için yeni cevap yazmak zorunda kaldım elinize ve emeğinize sağlık teşekkür ederim.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst