Kapalı Dosyaya Veri Kopyalama

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. Arthassss,

Aşağıdaki kod ile kapalı dosyanın "AZ1" hücresine sayı ve harften oluşan veriyi aktardım. Denermisiniz.

Kod:
Sub KAPALI_DOSYAYA_VERİ_AKTAR()
    Dim ADODB_BAGLANTI As Object, KAYIT_SETİ As Object
    
    Set ADODB_BAGLANTI = CreateObject("ADODB.Connection")
    ADODB_BAGLANTI.Open "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & _
    ThisWorkbook.Path & "\Kitap1.xls;extended properties=""Excel 8.0;Hdr=No"""
    
    Set KAYIT_SETİ = CreateObject("ADODB.Recordset")
    KAYIT_SETİ.Open "Select * From [Sayfa1$]", ADODB_BAGLANTI, 1, 3
    
    KAYIT_SETİ.MoveFirst
    KAYIT_SETİ.Fields(51).Value = "12345DENEME"
    KAYIT_SETİ.Update
    
    Set ADODB_BAGLANTI = Nothing
    Set KAYIT_SETİ = Nothing
 
    MsgBox "Veri aktarımı tamamlanmıştır.", vbInformation
End Sub
 
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Sn.Ayhan verdiğiniz kodla denedim ama "öğe istenen ad ve veya sıra sayısı ile ilişkili derleme içinde bulunamıyor" şeklinde bir uyarı veriyor.
Mümkünse örnek dosyayı ekleyebilirseniz çok memnun olurum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. Arthassss,

İlginç evdeki bilgisayarımda kodu çalıştırdığımda hata vermedi. Ama işyerindeki bilgisayarımda sizin aldığınız hatayı bende aldım. Fakat hatayı neden verdiğini çözemedim. Araştırmaya devam ediyorum. Umarım çözüm buluruz.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,842
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
buradaki sorun şu örnek dosyayı açacaksınız içindeki bütün değerleri sileceksiniz ve hücreleri biçimlendirden geneli seçeceksin kayıt edip kapatacaksın ondan sonra kayıt işlemi sayı veya kelime olarak yapılıyor.

birde şöyle bir şey var örnek dosyanın içindeki 2009 sayfasının biçim formatı farklı galiba çünkü bunu silip yerne yaniden başka sayfa oluşturduğumuz vakit adınıda değiştirsek kayıt yapmıyor
 
Son düzenleme:
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Sn. Halit çözüm için teşekkür ederim. Aslında sayfada bazı hücrelerin biçimlerinde değişiklik yapmılştım ama geneline yönelik bir değişiklik yapmamıştım. Kaydın yapılacağı hücreninde formatındada herhangi bir oynama yapmamıştım ama, bu şekilde sorunun çözülmesi ilginç doğrusu.

Sayfanın biçim formatından tam olarak kastınız nedir bilmiyorum ama dediğiniz bu olay benimde dikkatimi çekmişti. Kod bu sayfada çalışıyor ama Dosya içerisine bir sayfa ekleyip o sayfanın ismi ile çalıştırmak isteyincede kararsızlık gösterebiliyor. Yada sadece 2009 isimli açık olan sayfaya yazılıyor ama bir sayfa daha ekleyip bu sayfa seçiliyken'de 2009 isimli sayfaya yazma işlemi gerçekleşmiyor.
Sonuç olarak elinde daha karalı çalışan bir kod olan varsa ve paylaşırsa memnun olurum.
 
Katılım
26 Şubat 2010
Mesajlar
184
Excel Vers. ve Dili
2013 Türkçe
64 Bit
Merhaba

Çok eski bir konuyu uyandırıyorum ama, çok uğraşmama rağmen alttaki hatayı düzeltemedim. Belki çok basit ve gözümden kaçan bir şey ama öyleyse de kusura bakmayın lütfen.

Kod:ADODB_BAGLANTI.Open "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & ThisWorkbook.Path & "\Kitap1.xls;extended properties=""Excel 8.0;Hdr=No"""

Hata: Sağlayıcı bulunamıyor düzgün yüklenmemiş olabilir.

dosya aynı klasörde, ismi Kitap 1, uzantısı xls.


Yardımcı olabilirseniz sevinirim.
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
ADODB_BAGLANTI.Open "Provider=Microsoft.ace.Oledb.12.0;Data Source=" & ThisWorkbook.Path & "\Kitap1.xls;extended properties=""Excel 8.0;Hdr=No"""
olarak deneyin. Office versiyonunuza göre değişiklik gösterebilir.
 
Katılım
26 Şubat 2010
Mesajlar
184
Excel Vers. ve Dili
2013 Türkçe
64 Bit
merhaba dediğiniz gibi düzenledim o kısım düzeldi,

Alttaki kodda pc adını dosyaya aktarmaya çalışıyorum fakat alamıyorum
KAYIT_SETİ.Fields(1) = Environ(UserName)
Bu kısım hata veriyor. Neden olabilir.

Kod:
Sub KAPALI_DOSYAYA_VERİ_AKTAR()
Dim ADODB_BAGLANTI As Object, KAYIT_SETİ As Object

Set ADODB_BAGLANTI = CreateObject("ADODB.Connection")
ADODB_BAGLANTI.Open "Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & ThisWorkbook.Path & "\Kitap1.xls;extended properties=""Excel 12.0;Hdr=No"""

Set KAYIT_SETİ = CreateObject("ADODB.Recordset")
KAYIT_SETİ.Open "Select * From [Sayfa1$]", ADODB_BAGLANTI, 1, 3

KAYIT_SETİ.MoveFirst
KAYIT_SETİ.Fields(1) = Environ(UserName)
KAYIT_SETİ.Update

Set ADODB_BAGLANTI = Nothing
Set KAYIT_SETİ = Nothing

MsgBox "Veri aktarımı tamamlanmıştır.", vbInformation
End Sub
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Environ("USERNAME") olarak deneyin.
 
Katılım
26 Şubat 2010
Mesajlar
184
Excel Vers. ve Dili
2013 Türkçe
64 Bit
ilginiz için teşekkürler,

Sorunu hallettim.

Çalışan hali alttaki gibidir,
Kod:
Sub KAPALI_DOSYAYA_VERİ_AKTAR()
Dim ADODB_BAGLANTI As Object, KAYIT_SETİ As Object

Set ADODB_BAGLANTI = CreateObject("ADODB.Connection")
ADODB_BAGLANTI.Open "Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & ThisWorkbook.Path & "\Kitap1.xls;extended properties=""Excel 12.0;Hdr=No"""

Set KAYIT_SETİ = CreateObject("ADODB.Recordset")
KAYIT_SETİ.Open "Select * From [Sayfa1$]", ADODB_BAGLANTI, 1, 3

KAYIT_SETİ.MoveFirst

KAYIT_SETİ.Fields(1) = Environ("username")
KAYIT_SETİ.Update

Set ADODB_BAGLANTI = Nothing
Set KAYIT_SETİ = Nothing

MsgBox "Veri aktarımı tamamlanmıştır.", vbInformation
End Sub
 
Son düzenleme:
Katılım
26 Şubat 2010
Mesajlar
184
Excel Vers. ve Dili
2013 Türkçe
64 Bit
Tekrar merhaba
MoveFirst yapınca kod aktarım yapıyor, fakat AddNew dediğimde hiç aktarım olmuyor,
Nerede hatalıyım acaba yardımcı olabilirmisiniz

Kod:
Sub KAPALI_DOSYAYA_VERİ_AKTAR()
Dim ADODB_BAGLANTI As Object, KAYIT_SETİ As Object

Set ADODB_BAGLANTI = CreateObject("ADODB.Connection")
ADODB_BAGLANTI.Open "Provider=Microsoft.ACE.Oledb.12.0;Data Source=" & _
"C:\Users\ilkera\Desktop\Yeni klasör" & "\Kitap1.xls;extended properties=""Excel 12.0;Hdr=yes"""
For i = 1 To Range("A65536").End(3).Row

Set KAYIT_SETİ = CreateObject("ADODB.Recordset")
KAYIT_SETİ.Open "Select * From [Sayfa1$]", ADODB_BAGLANTI, adOpenKeyset, adLockOptimistic

''KAYIT_SETİ.MoveFirst
KAYIT_SETİ.AddNew
KAYIT_SETİ.Fields(2).Value = Cells(i, 1)
KAYIT_SETİ.Update
''KAYIT_SETİ.Close
Next
Set ADODB_BAGLANTI = Nothing
Set KAYIT_SETİ = Nothing

MsgBox "Veri aktarımı tamamlanmıştır.", vbInformation
End Sub
 
Son düzenleme:
Katılım
26 Şubat 2010
Mesajlar
184
Excel Vers. ve Dili
2013 Türkçe
64 Bit
Merhaba üstadlar

yukarıdaki kodda çok sıkıştım. Addnew ile kapalı dosyaya hiç kayıt atamıyorum.sebebi ne olabilir.

Yardımcı olabilrseniz sevinirim
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Selamlar,

Serdar bey,

Sanırım tek bir komutla bu yöntemle tabloyu bir bütün olarak alamıyoruz. Fakat döngü yöntemi ile alabiliyoruz. Tabiki bunun kötü yanı eğer veri alınacak tablo hacmi büyükse veri alımında yavaşlama söz konusu olacaktır. Zaten bu durumda ADO yada DAO yöntemlerini kullanmak daha mantıklı olacaktır.

Döngü yöntemi ile aşağıdaki kodu kullanarak veri alabilirsiniz. Dosya yolunu ve sayfa adını kendinize göre değiştirmeyi unutmayın.

Kod:
Option Explicit

Sub VERİ_AL()
    Dim Satır As Long, Sütun As Byte, Son_Satır As Long, Son_Sütun As Byte

    Son_Satır = ExecuteExcel4Macro("CountA('" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!C1)")
    Son_Sütun = ExecuteExcel4Macro("CountA('" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!R1)")

    Range(Cells(1, 1), Cells(Son_Satır, Son_Sütun)).ClearContents

    For Satır = 1 To Son_Satır
        For Sütun = 1 To Son_Sütun
            Cells(Satır, Sütun) = ExecuteExcel4Macro("'" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!R" & Satır & "C" & Sütun & "")
        Next
    Next

    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
Korhan Hocam Merhaba,

Kod:
Cells(Satır, Sütun) = ExecuteExcel4Macro("'" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!R" & Satır & "C" & Sütun & "")
ExecuteExcel4Macro yöntemi ile kapalı bir dosyadan hücre adresini vererek veri alabiliyoruz; bu işlemin tersini nasıl yapabiliriz?

Kapalı dosyada hücre adresi vererek oraya veri yazdırmayı yapabilir miyiz mi?

Teşekkürler, iyi akşamlar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba @tamer42,

Ben bu sorunuzu görmemişim. Benim bildiğim kadarıyla bu işlemi 2 şekilde yapabilirsiniz.

1- ADO ile kapalı dosyaya veri yazdırabilirsiniz. Dosyanın açılmasına gerek yoktur.

2- Kapalı dosyayı açarak istediğiniz hücreye veri yazdırıp dosyayı kayıt edip kapatabilirsiniz. (Yeni bir Excel uygulaması gizli olarak açılıp işlem yapılabilir.)
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba @tamer42,

Ben bu sorunuzu görmemişim. Benim bildiğim kadarıyla bu işlemi 2 şekilde yapabilirsiniz.

1- ADO ile kapalı dosyaya veri yazdırabilirsiniz. Dosyanın açılmasına gerek yoktur.

2- Kapalı dosyayı açarak istediğiniz hücreye veri yazdırıp dosyayı kayıt edip kapatabilirsiniz. (Yeni bir Excel uygulaması gizli olarak açılıp işlem yapılabilir.)
Sayın Korhan Ayhan teşekkürler,

ADO ile kapalı dosyaya veri yazdırabilmek için sanırım dosya veritabanı formatında olmalıdır.
Veri tabanı formatında olmayan kapalı bir dosyaya sadece hücre adresi verilerek bir veri yazdırılabilir mi?

tekrar teşekkürler,
iyi hafta sonları.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#21 nolu mesajdaki kodu deneyiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,739
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İşlemleri boş yeni oluşturulmuş bir excel dosyasında deneyebilir misiniz?

Burada ki hata @halit3 beyin #25 nolu mesajıda bahsettiği durumla ilgili olabilir.

ADO'da belli kurallara uymak gerekiyor.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
İşlemleri boş yeni oluşturulmuş bir excel dosyasında deneyebilir misiniz?

Burada ki hata @halit3 beyin #25 nolu mesajıda bahsettiği durumla ilgili olabilir.

ADO'da belli kurallara uymak gerekiyor.
buradaki sorun şu örnek dosyayı açacaksınız içindeki bütün değerleri sileceksiniz ve hücreleri biçimlendirden geneli seçeceksin kayıt edip kapatacaksın ondan sonra kayıt işlemi sayı veya kelime olarak yapılıyor.

birde şöyle bir şey var örnek dosyanın içindeki 2009 sayfasının biçim formatı farklı galiba çünkü bunu silip yerne yaniden başka sayfa oluşturduğumuz vakit adınıda değiştirsek kayıt yapmıyor
Sn Korhan hocam, kayıt yapılacak dosya tamamen boş, ekte sunulmuştur.
 

Ekli dosyalar

Üst