Kapalı Dosyaya Veri Kopyalama

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Sn Korhan hocam, kayıt yapılacak dosya tamamen boş, ekte sunulmuştur.
Sorun orada zaten, tamamen boş olmamalı ..... 1. satırda en azından ilk 52 hücrenin dolu olması lazım. (A1:AZ1)

Kapalı dosyadaki sayfa adının da kodla uyumlu olması gerekir.

.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Sorun orada zaten, tamamen boş olmamalı ..... 1. satırda en azından ilk 52 hücrenin dolu olması lazım. (A1:AZ1)

Kapalı dosyadaki sayfa adının da kodla uyumlu olması gerekir.

.
Haluk Hocam teşekkürler,

bu kodla AZ1 hücresine yazabiliyoruz, bu veriyi AZ12 hücresine yazdırmak istesek nasıl bir yol izlemeleyiz?

Kod:
    KAYIT_SETİ.MoveFirst
    KAYIT_SETİ.Fields(51).Value = "12345DENEME"
    KAYIT_SETİ.Update
iyi haftasonları
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Tamer Bey, ADO konusu başlı başına bir deryadır..... burada 1-2 soru/cevapla dosyanızı toparlamanız zor olur.

Bence, Korhan Beyin dediği gibi klasik yöntemlerle gizli veya görünür olarak dosyayı açıp, klasik kodlamalarla istediğiniz yere verilerinizi yazdırmanız sizin için daha uygun olacaktır, diye düşünüyorum...

.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,248
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Veri tabanı olarak access kullanabilirsiniz.:cool:
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
ilginize teşekkürler
 

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
Kapalı dosyadan veri alırken font ve biçim alabilmemiz mümkünmü?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kapalı dosyayı açarsanız alabilirsiniz.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
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 ADO yöntemi kullanarak nasıl yapabiliriz?

özetle ADO yöntemiyle Kapalı dosyada herhangi bir hücre adresi vererek orada yazan veriyi nasıl aldırabiliriz?
Bununla ilgili örnek bir kod var mıdır?

Teşekkürler, iyi akşamlar
 

Korhan Ayhan

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

C++:
Option Explicit

Sub Test()
    Dim Dosya As String, Zaman As Double, Adres As String
    Dim Sorgu As String, Kayit_Seti As Object, Baglanti As Object
    
    Adres = Application.InputBox("Lütfen hücre adresini yazınız.", "Hücre Adresi")
    If Adres = "False" Or Adres = "" Then
        MsgBox "Lütfen hücre adresi yazınız!", vbCritical
        Exit Sub
    End If
    
    Zaman = Timer
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set Baglanti = CreateObject("AdoDb.Connection")
    Set Kayit_Seti = CreateObject("AdoDb.Recordset")
    
    Dosya = ThisWorkbook.Path & "\Test.xlsm"

    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties=""Excel 12.0;Hdr=No"""
    
    Sorgu = "Select * From [Sheet1$" & Adres & ":" & Adres & "]"
    
    Kayit_Seti.Open Sorgu, Baglanti, 1, 1
    
    If Kayit_Seti.RecordCount > 0 Then Range("A1").CopyFromRecordset Kayit_Seti
    
    If Kayit_Seti.State <> 0 Then Kayit_Seti.Close
    If Baglanti.State <> 0 Then Baglanti.Close
    
    Set Kayit_Seti = Nothing
    Set Baglanti = Nothing
            
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bu da başka bir alternatif;

C++:
Option Explicit

Sub Test()
    Dim Dosya As String, Zaman As Double, Adres As String
    Dim Sorgu As String, Kayit_Seti As Object, Baglanti As Object
    Dim Veri As Variant, Satir As Long, Sutun As Integer
    
    Adres = Application.InputBox("Lütfen hücre adresini yazınız.", "Hücre Adresi")
    If Adres = "False" Or Adres = "" Then
        MsgBox "Lütfen hücre adresi yazınız!", vbCritical
        Exit Sub
    End If
    
    Zaman = Timer
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set Baglanti = CreateObject("AdoDb.Connection")
    Set Kayit_Seti = CreateObject("AdoDb.Recordset")
    
    Dosya = ThisWorkbook.Path & "\Test.xlsm"

    Satir = Range(Adres).Row
    Sutun = Range(Adres).Column

    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties=""Excel 12.0;Hdr=No"""
    
    Sorgu = "Select * From [Sheet1$]"
    
    Kayit_Seti.Open Sorgu, Baglanti, 1, 1
    
    If Kayit_Seti.RecordCount > 0 Then
        Veri = Application.Transpose(Kayit_Seti.GetRows)
        If UBound(Veri, 1) > Satir And UBound(Veri, 2) > Sutun Then
            Range("A1") = Veri(Satir, Sutun)
            MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
                   "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
        Else
            MsgBox "Veri alınamıyor!" & vbLf & vbLf & _
                   Adres & " hücresi tablo dışında!", vbCritical
        End If
    End If
    
    If Kayit_Seti.State <> 0 Then Kayit_Seti.Close
    If Baglanti.State <> 0 Then Baglanti.Close
    
    Set Kayit_Seti = Nothing
    Set Baglanti = Nothing
            
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Bu da başka bir alternatif;

C++:
Option Explicit

Sub Test()
    Dim Dosya As String, Zaman As Double, Adres As String
    Dim Sorgu As String, Kayit_Seti As Object, Baglanti As Object
    Dim Veri As Variant, Satir As Long, Sutun As Integer
   
    Adres = Application.InputBox("Lütfen hücre adresini yazınız.", "Hücre Adresi")
    If Adres = "False" Or Adres = "" Then
        MsgBox "Lütfen hücre adresi yazınız!", vbCritical
        Exit Sub
    End If
   
    Zaman = Timer
   
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
   
    Set Baglanti = CreateObject("AdoDb.Connection")
    Set Kayit_Seti = CreateObject("AdoDb.Recordset")
   
    Dosya = ThisWorkbook.Path & "\Test.xlsm"

    Satir = Range(Adres).Row
    Sutun = Range(Adres).Column

    Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
    Dosya & ";Extended Properties=""Excel 12.0;Hdr=No"""
   
    Sorgu = "Select * From [Sheet1$]"
   
    Kayit_Seti.Open Sorgu, Baglanti, 1, 1
   
    If Kayit_Seti.RecordCount > 0 Then
        Veri = Application.Transpose(Kayit_Seti.GetRows)
        If UBound(Veri, 1) > Satir And UBound(Veri, 2) > Sutun Then
            Range("A1") = Veri(Satir, Sutun)
            MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
                   "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
        Else
            MsgBox "Veri alınamıyor!" & vbLf & vbLf & _
                   Adres & " hücresi tablo dışında!", vbCritical
        End If
    End If
   
    If Kayit_Seti.State <> 0 Then Kayit_Seti.Close
    If Baglanti.State <> 0 Then Baglanti.Close
   
    Set Kayit_Seti = Nothing
    Set Baglanti = Nothing
           
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub
Korhan Hocam merhaba,
öncelikle teşekkürler
Burada InputBox' ta Hücre adresini C4 olarak yazdığımda ekli hata mesajını ( FROM yan tümcesinde söz dizimi hatası )alıyorum.
nerede hata yapıyor olabilirim.

iyi günler.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sondaki köşeli parantez fazla olmuş.

[icmal$]
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
çok teşekkürler Korhan Hocam
iyi akşamlar.
Korhan Hocam aşağıdaki kodda kayıt sayısı hep 0 geldiği için verileri alamıyorum, nerede hata yapıyor olabiliriz?
Teşekkürler
iyi çalışmalar.

Kod:
Sub xlAdobCat()
Dim Con As Object
Dim RS As Object
Dim x As Long, Son As Long
Dim yol As String, MyFile As String
Dim Sorgu As String, Tbl As String

Sheets("Sheet1").Select

Range("A:G").ClearContents

Set Con = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.recordset")
Set cat = CreateObject("ADOX.Catalog")

yol = ThisWorkbook.Path

MyFile = yol & "\" & "Satış.xlsx"

x = 1

Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
   MyFile & ";extended properties=""Excel 12.0;hdr=yes"""

cat.ActiveConnection = Con

For Each Table In cat.tables
Tbl = Table.Name

       Sorgu = "Select * From [" & Tbl & "C5:C5]"
     
    RS.Open Sorgu, Con, 1, 1

    Cells(x, 1) = Replace(Tbl, "$", "")
    If RS.RecordCount > 0 Then Range("B" & x).CopyFromRecordset RS
    
    Tbl = ""
    Sorgu = ""
    RS.Close
    
x = x + 1

Next

Con.Close
Cells.EntireColumn.AutoFit

End Sub
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bağlantı metnindeki başlıklar parametresini No olarak değiştirin.

Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
MyFile & ";extended properties=""Excel 12.0;hdr=Yes"""
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Bağlantı metnindeki başlıklar parametresini No olarak değiştirin.

Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
MyFile & ";extended properties=""Excel 12.0;hdr=Yes"""
Çok teşekkürler,
demek oluyor ki bazen basit düşünmek gerekiyor.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Bağlantı metnindeki başlıklar parametresini No olarak değiştirin.

Con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
MyFile & ";extended properties=""Excel 12.0;hdr=Yes"""
Korhan hocam birde Kaynak dosyada sayfa numarasını nümerik değer olduğunda hata verdi, bunu nasıl aşabiliriz?

tekrar teşekkürler, iyi çalışmalar.

221482
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,738
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sorgu satırını aşağıdaki gibi değiştirip deneyiniz.

Sorgu = "Select * From [" & Replace(Tbl, "'", "") & "C5:C5]"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,110
Excel Vers. ve Dili
Office 2013 İngilizce
Sorgu satırını aşağıdaki gibi değiştirip deneyiniz.

Sorgu = "Select * From [" & Replace(Tbl, "'", "") & "C5:C5]"
Teşekkürler Korhan Hocam, sağolun varolun,
 
Üst