kapalı dosyadan belirsiz sayıda veri almak

Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
merhaba,
bana her gün 27 ilden gelen raporlar var ve ben genel bir rapor hazırlamak için bu dosyalardaki verileri alt alta yapıştırıyorum. gelen dosyalardaki verilerin hangi hücreden başladıkları belli ancak son satır hergün değişebiliyor. dosya isimleri de tarih ve şehir ismini içerdiğinden hergün değişiyor. bu kopyalama işlemini yapabilmek için öncelikle kapalı bir dosyadan veri almaya çalıştım ancak son satırın değişken olduğu durum için çözüm bulamadım. konuyu kavramak için deneme yaptığım kodlar şöyle;

Kod:
'verilerin alınacağı dosyayı aç
    
MyWB = "C:\Documents and Settings\cakyamuni\Desktop\EXCEL\A.xls"
Set NewXL = New Excel.Application
NewXL.Workbooks.Open MyWB
NewXL.Workbooks(Dir(MyWB)).Sheets(1).Range("c1").Select

    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

NewXL.Workbooks(Dir(MyWB)).Close SaveChanges:=True
NewXL.Quit 'dosyayı kapat
Set NewXL = Nothing

'diğer dosyada yapıştır

Windows("al veriyi").Activate
Sayfa1.Range("d5").Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
bu kod çalışınca d5 hücresine gidiyor ancak d sütunu boş olduğundan 65000inci hücreye kadar seçim yapıyor. fikirlerinizi bekliyorum. teşekkürler
 
Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
teşekkürler. ado olayına girmek istemiyorum. yeterli bilgi sahibi olmadığım gibi benden daha az bilenlerin de benden sonra anlayabilecekleri şekilde kod oluşturmak istiyorum..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kopyalanacak veri aralığı hangi sütunlardır.
 
Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
kopyalanacak veriler b ve f sütunlarında 5.satırdan başlıyor ancak son satır hergün için değişiklik gösterebiliyor.
 
Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
peki yukarıdaki kodda pastespecial yönteminin başarısız olduğuna dair hatayı neden veriyor olabilir?
 
Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
teşekkürler. sorum için özel durumlar;
1- dosya adları tarih içerdiğinden hergün değişiyor
2- her il için gelen dosya \\ankara\şubat 2007\21.02.2007 ankara.xls şeklinde kaydediliyor.
yani dosyalar verileri aktaracağım dosyayla aynı klasörde değil.

aşağıdaki kodu biraz açıklayabilir misiniz?
Kod:
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\ayeula\shift\").Files

Set yeni = CreateObject("Excel.Application")
yeni.Workbooks.Open "C:\ayeula\shift\" & dosya.Name
Set s1 = yeni.Workbooks(dosya.Name).Sheets(1)
s1.Range("a2:i" & s1.[a65536].End(3).Row).Copy
sat = [a65536].End(3).Row
Cells(sat + 1, "a").Select
ActiveSheet.Paste
yeni.Quit
Set yeni = Nothing
anladığım kadarıyla her bir dosya için bir excel nesnesi oluşturuyor.
anlamadığım
Kod:
s1.Range("a2:i" & s1.[a65536].End(3).Row).Copy
satırı. neden a2:i aralığından başlıyor ve end(3) parametresinin işlevi nedir?
teşekkürler
 
Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
createobject yöntemi

arkadaşlar yardımlarınız için teşekkür ederim.
Kod:
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\Documents and Settings\Desktop\EXCEL\ring\").Files
Set baglanti = CreateObject("ADODB.Connection")
yol = "DRIVER={Microsoft Excel Driver (*.xls)};" & "DBQ=C:\Documents and Settings\Desktop\EXCEL\ring\" & dosya.Name
baglanti.Open yol
Set rs = baglanti.Execute("[b6:f65536]")
sonsat = [b65536].End(3).Row + 1
Cells(sonsat, "b").CopyFromRecordset rs
rs.Close
baglanti.Close
Next
bu yöntemle aynı klasörden istediğim gibi veri alabiliyorum.
ancak her dosyanın farklı klasörde olduğu durumda nasıl bir yol izlemeliyim?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bunun için her yolu kod içinde ayrı ayrı tanımlayın. Yada siz dosyalar ve bulundukları yolları verirseniz yardımcı olmaya çalışırım.
 
Katılım
8 Ağustos 2005
Mesajlar
16
Excel Vers. ve Dili
office xp
yardımlarınız için çok teşekkür ederim. şimdilik klasörlerdeki dosyaları farklı bir klasöre kopyalayıp bu klasör üzerinde işlem yapıyorum. dosya isimleri günlük olarak değiştiğinden dosya isimlerini de ayrıyeten tanımladım. yardımlarınız için tekrar teşekkürler, kolay gelsin.

dosya kopyalama[/]

Kod:
ankaracopy = "C:\aktarma\" & Sheets("ankara").Range("b2") & " ANKARA.xls"
bogazicicopy = "C:\aktarma\" & Sheets("boğaziçi").Range("b2") & " BOĞAZİÇİ.xls"

ankara = "C:\ANKARA\" & Sheets("ankara").Range("b2") & " ANKARA.xls"
bogazici = "C:\BOĞAZİÇİ\" & Sheets("boğaziçi").Range("b2") & " BOĞAZİÇİ.xls"

FileSystem.FileCopy (ankara), (ankaracopy)
FileSystem.FileCopy (bogazici), (bogazicicopy)
veri aktarma

Kod:
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\aktarma\").Files
Set baglanti = CreateObject("ADODB.Connection")
yol = "DRIVER={Microsoft Excel Driver (*.xls)};" & "DBQ=C:\aktarma\" & dosya.Name
baglanti.Open yol
Set rs = baglanti.Execute("[b6:f65536]")
sonsat = [b65536].End(3).Row + 1
Cells(sonsat, "b").CopyFromRecordset rs
rs.Close
baglanti.Close
Next
 

Hakan ERDOST

Destek Ekibi
Destek Ekibi
Katılım
12 Eylül 2004
Mesajlar
871
Excel Vers. ve Dili
Excel 2019 Türkçe (Ev)
Excel 2013 Türkçe (Okul)
yardımlarınız için çok teşekkür ederim. şimdilik klasörlerdeki dosyaları farklı bir klasöre kopyalayıp bu klasör üzerinde işlem yapıyorum. dosya isimleri günlük olarak değiştiğinden dosya isimlerini de ayrıyeten tanımladım. yardımlarınız için tekrar teşekkürler, kolay gelsin.

dosya kopyalama[/]

Kod:
ankaracopy = "C:\aktarma\" & Sheets("ankara").Range("b2") & " ANKARA.xls"
bogazicicopy = "C:\aktarma\" & Sheets("boğaziçi").Range("b2") & " BOĞAZİÇİ.xls"

ankara = "C:\ANKARA\" & Sheets("ankara").Range("b2") & " ANKARA.xls"
bogazici = "C:\BOĞAZİÇİ\" & Sheets("boğaziçi").Range("b2") & " BOĞAZİÇİ.xls"

FileSystem.FileCopy (ankara), (ankaracopy)
FileSystem.FileCopy (bogazici), (bogazicicopy)
veri aktarma

Kod:
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\aktarma\").Files
Set baglanti = CreateObject("ADODB.Connection")
yol = "DRIVER={Microsoft Excel Driver (*.xls)};" & "DBQ=C:\aktarma\" & dosya.Name
baglanti.Open yol
Set rs = baglanti.Execute("[b6:f65536]")
sonsat = [b65536].End(3).Row + 1
Cells(sonsat, "b").CopyFromRecordset rs
rs.Close
baglanti.Close
Next


merhaba bu kodda nasıl bir dğişklik yapalım ki aktarma dosyası altındaki tüm çalışma kitaplarındaki forma-a , form-b şeklinde adlandırılan çalışma sayfalarından veri alsın.Her bir sayfa için ayrı buton oluşturulup koda atanacak.
 
Üst