• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excel bu satırda niçin hata verir?

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,904
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Merhaba Arkadaşlar,
Excel 2016 kullanıyorum. Bir bilgi getiren makroda code içinde görülen satırda israrla hata veriyor. Versiyon farkından olduğunu düşünüyorum. Daha önce Excel 2010 vardı makinemde. Bu hatayı nasıl giderebilirim?
Saygılarımla
Kod:
adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & myFile & ";Extended Properties=Excel 8.0;"
 
bunu dene
Kod:
adoCN.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myFile & ";Extended Properties=""Excel 12.0"
 
Sayın Halit3 Hocam,
İlginize teşekkür ederim, ama ekli resimlerdeki hata belirdi.
Saygılarımla
 

Ekli dosyalar

  • Adsız1.png
    Adsız1.png
    33.5 KB · Görüntüleme: 3
  • Adsız2.png
    Adsız2.png
    12.2 KB · Görüntüleme: 3
Merhaba dosyanızı ve kodlarınız ney bilmiyorum
ofis 2003 ve alt versiyonlarda bu kullanılıyor (Microsoft.Jet.OLEDB.4.0)
ofis 2007 ve üzerindeki versiyonlarda bu kullanılıyor (Microsoft.Ace.OLEDB.12.0)
 
Sayın Halit3 Hocam,
Sayın Haluk Hocanın - 10/10/2018 tarihli bir çalışması. Gayet güzel çalışıyordu. Neden olduğunu anlayamadım.
Saygılarımla
Kod:
Sub Test2()
    'Haluk - 10/10/2018
    Dim adoCN As Object, RS As Object
    Dim myFile As String, SayfaAdi As String, strSQL As String
    
    ActiveSheet.Range("A2:K" & Rows.Count).Clear
    
    If [O1] = 0 Then MsgBox "adı soyadı bu harflerle başlayan öğrencimiz yoktur"
  
    myFile = ThisWorkbook.FullName
    SayfaAdi = "[Sayfa1$]"
  
    Set adoCN = CreateObject("ADODB.Connection")
    Set RS = CreateObject("ADODB.Recordset")
'    adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & myFile & ";Extended Properties=Excel 8.0;"
    adoCN.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myFile & ";Extended Properties=""Excel 12.0"
    
    strSQL = "Select * from [Sayfa1$] where [İsim]='" & Range("P1") & "'"
    RS.Open strSQL, adoCN
    Range("A2").CopyFromRecordset RS
  
    adoCN.Close
    Set RS = Nothing
    Set adoCN = Nothing
End Sub
 
Örnek dosyanızı ekleyin kodu orada deneyelim.
 
Bu kodu bir dene
Kod:
Sub Test2()
Dim adoCN As Object, RS As Object
Dim myFile As String, SayfaAdi As String, strSQL As String

ActiveSheet.Range("A2:K" & Rows.Count).Clear
If [O1] = 0 Then MsgBox "adı soyadı bu harflerle başlayan öğrencimiz yoktur"
myFile = ThisWorkbook.FullName
SayfaAdi = "[Sayfa1$]"

Dim fL As Object
Set fL = CreateObject("Scripting.FileSystemObject")
uzanti = fL.GetExtensionName(myFile)
MsgBox uzanti
Set adoCN = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")

If uzanti = "xls" Then
adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & myFile & ";Extended Properties=""Excel 8.0;HDR=yes"""  'ofis 2003
ElseIf uzanti = "xlsm" Or uzanti = "xlsx" Then
adoCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myFile & ";Extended Properties=""Excel 12.0;HDR=yes""" 'ofis 2007
Else

GoTo atla
End If
strSQL = "Select * from [Sayfa1$] where [İsim]='" & Range("P1") & "'"
RS.Open strSQL, adoCN
Range("A2").CopyFromRecordset RS

adoCN.Close
Set RS = Nothing
Set adoCN = Nothing
atla:
End Sub
 
Bu şekilde deneyin ....

Kod:
Sub Test3()
    'Haluk - 03/05/2019
    Dim adoCN As Object, RS As Object
    Dim myFile As String, SayfaAdi As String, strSQL As String
   
    ActiveSheet.Range("A2:K" & Rows.Count).Clear
   
    If [O1] = 0 Then MsgBox "adı soyadı bu harflerle başlayan öğrencimiz yoktur"
  
    myFile = ThisWorkbook.FullName
    SayfaAdi = "[Sayfa1$]"
  
    Set adoCN = CreateObject("ADODB.Connection")
    Set RS = CreateObject("ADODB.Recordset")
'    adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & myFile & ";Extended Properties=Excel 8.0;"
    adoCN.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myFile & ";Extended Properties=Excel 12.0"
   
    strSQL = "Select * from [Sayfa1$] where [İsim]='" & Range("P1") & "'"
    RS.Open strSQL, adoCN
    Range("A2").CopyFromRecordset RS
  
    adoCN.Close
    Set RS = Nothing
    Set adoCN = Nothing
End Sub

.
 
Sayın Hocalarım,
İlgilerinize çok teşekkür ederim. Hepsi çalıştı.
Saygılarımla
 
Bu şekilde de çalışır, alternatif olsun ....

Kod:
Sub Test4()
    'Haluk - 03/05/2019
    Dim adoCN As Object, RS As Object
    Dim myFile As String, SayfaAdi As String, strSQL As String
    
    ActiveSheet.Range("A2:K" & Rows.Count).Clear
    
    If [O1] = 0 Then MsgBox "adı soyadı bu harflerle başlayan öğrencimiz yoktur"
  
    myFile = ThisWorkbook.FullName
    SayfaAdi = "[Sayfa1$]"
  
    Set adoCN = CreateObject("ADODB.Connection")
    Set RS = CreateObject("ADODB.Recordset")
    adoCN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & myFile & ";Extended Properties=Excel 8.0;"
    
    strSQL = "Select * from [Sayfa1$] where lcase([İsim])='" & LCase(Range("N1")) & "'"
    RS.Open strSQL, adoCN
    Range("A2").CopyFromRecordset RS
  
    adoCN.Close
    Set RS = Nothing
    Set adoCN = Nothing
End Sub

.
 
Çok teşekkür ederim Haluk Hocam,
Ama neden çalışmayı durdurduğunu anlayamadım.
Saygılarımla
 

Ekli dosyalar

  • Adsız3.png
    Adsız3.png
    16.1 KB · Görüntüleme: 3
Geri
Üst