Kapalı bir dosyadan bir sayfayı olduğu gibi getirmek

Katılım
13 Mayıs 2007
Mesajlar
32
Excel Vers. ve Dili
excell 2003
turkce
merhaba arkadaşlar;

adresler.xls dosyası üzerinde çalışıyorum.
o anda kapalı olan genel.xls dosyası içindeki telefonlar isimli sayfayı olduğu gibi üzerinde çalıştığım adresler.xls dosyasına kopyalamak istiyorum.

bu işlemi yapabileceğim makro kodunu söyleyebilir misiniz ?

teşekkür ederim...
 

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
Aşağıdaki gibi bir kod kullanabilirsiniz. Kod içindeki dosya yollarını kendinize göre değiştirin. Verilerin Sayfa1 isimli bir sayfaya kopyalandığı kabul edilmiştir.

Kod:
Set baglanti = CreateObject("ADODB.Connection")
yol = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\genel.xls;Extended Properties=""Excel 8.0;HDR=no;IMEX=1"";"
baglanti.Open yol
Set RS = baglanti.Execute("[telefonlar$A1:AZ65536]")
[sayfa1!a1].CopyFromRecordset RS
RS.Close
baglanti.Close
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,320
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kod:
Sub Test()
    'Haluk 17/02/2008
    Dim DB As Object
    Dim RS As Object
    Dim dbRow As Long
    Dim KapDosya As Variant
    
    KapDosya = Application.GetOpenFilename("Veri tabanı (*.xls), *.xls", , "Veri tabanı seçin....")
    
    If Not KapDosya = False Then
        On Error Resume Next
            Set daoDBEngine = CreateObject("DAO.DBEngine")
            Set daoDBEngine = CreateObject("DAO.DBEngine.36")
        On Error GoTo 0
        
        Set DB = daoDBEngine.OpenDatabase(KapDosya, False, False, "Excel 8.0; HDR=Yes; IMEX=1;")
        Set RS = DB.OpenRecordset("select * from [Telefonlar$]")
        
        Range("A1").CopyFromRecordset RS
        
        RS.Close
        DB.Close
    End If
    Set RS = Nothing
    Set DB = Nothing
    Set daoDBEngine = Nothing
End Sub
 
Katılım
13 Mayıs 2007
Mesajlar
32
Excel Vers. ve Dili
excell 2003
turkce
Sayın Leventm teşekkür ederim, gayet güzel çalışıyor.

Sayfanın isminin de aynı olması için nasıl bir ekleme yapmak gerekir ?
Şöyleki, çalışma kitabımda tek bir sayfa var.
Yeni bir sayfa oluşturup ismini Telefonlar şeklinde değiştirip,
diğer dosyadaki Telefonlar sayfasındaki verileri bu sayfaya taşımak istiyorum.

Sizin yazdığınız kodlara nasıl bir ekleme yapmalıyım ?
 
Katılım
13 Mayıs 2007
Mesajlar
32
Excel Vers. ve Dili
excell 2003
turkce
Sayın Haluk, ilginize teşekkür ederim.

Makronuz istediğimden fazlasını veriyor.

Ancak bir sorun var :

kopyalayacağım sayfada 15.000 adet satır bulunuyor.
Yazmış olduğunuz kodları çalıştırdığımda
2048. satıra kadar verileri getirdikten sonra

Run-time error '-2147467259 (80004005)':
Method 'CopyFromRecordset' of object 'Range' failed

şeklinde hata mesajı vererek

Range("A1").CopyFromRecordset RS

ifadesini işaret ediyor ....

nasıl bir düzenleme yapmamız gerekir ?
 
Katılım
26 Mayıs 2005
Mesajlar
122
Excel Vers. ve Dili
excel 2003- ingilizce
Merhaba

Ben levent beyin kodunu çalıştıramadım.
İlk satırda Set bağlantıda compile error invalid outside prosedure hatası veriyor.
Acaba referanslar mı gerekiyor, rica etsem ornek bir dosya ekleyebilirmisiniz acaba.?
Haluk Beyin örneğini çalıştırdım ama ondada dosyayı kendim seçmek istemediğim için kullanamadım.

Yardımlarınızı esirgemediğiniz için şimdiden teşekkürler.
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Selamlar,
Sayın Ustalarım, bu konuyla ilgili şöyle bir uygulama gerekli. Açık dosyanın A1 hücresine aranan değeri yazıp, veri tabanında yani kapalı dosya (misal Sayfa1 A sütununda) bulunan değerin bulunduğu satırı açık dosyaya alamazmıyız.
 
Katılım
23 Şubat 2007
Mesajlar
1,212
Excel Vers. ve Dili
Excel2003
Yada daha önemli olan bunu access veri tabanından nasıl yapabiliriz.
 
Katılım
26 Mayıs 2005
Mesajlar
122
Excel Vers. ve Dili
excel 2003- ingilizce
Levent beyin kodunun başına Sub getirince çalıştı.

Kod:
Sub x()
Set baglanti = CreateObject("ADODB.Connection")
yol = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\genel.xls;Extended Properties=""Excel 8.0;HDR=no;IMEX=1"";"
baglanti.Open yol
Set RS = baglanti.Execute("[telefonlar$A1:AZ65536]")
[sayfa1!a1].CopyFromRecordset RS
RS.Close
baglanti.Close
End Sub
:)
 
Üst