Sheet mevcut değilse

tamer42

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

Kapalı olan Excel dosyaları içerisinden "data" adlı sheet' den bilgi alırken,

eğer herhangi bir dosyada "data" adlı sheet mevcut değilse; bu durumu nasıl ifade edebiliriz.

if .................... then

on error goto 10

end if
İyi Çalışmalar dilerim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

[vb:1:9334473be4]On error goto 10 'kodların en başına yazılacak.
.
.
.Mevcut kodlarınız
.
.
exit sub
10 msgbox "SAYFA ADI BULUNAMADI"
end sub[/vb:1:9334473be4]
 

tamer42

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

Tam anlatamadım galiba, Sheet' in dosya içerisinde mevcut olup olmadığını öğrenmek için gerekli olan koda ihtiyacım vardı.

İyi çalışmalar.
 

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
Yukarıda Levent arkadaşımın bahsettiği yolla yapabilirsiniz.

Veya, aşağıdaki gibi bir kullanıcı tanımlı fonksiyonla (ShExists), ana prosedur içinde (Test) bu fonksiyonu çağırarak, sözkonusu sayfanın olup, olmadığını kontrol edebilirsiniz.

Kod:
Sub Test()
'
'
'
'
    If ShExists("Sheet34") Then
        MsgBox "Ilgili sayfa bulundu...."
    Else
        MsgBox "Ilgili sayfa bulunamadi...."
    End If
'
'
'
'
End Sub
'
Function ShExists(Sh As String) As Boolean
    On Error Resume Next
    Set MySh = Sheets(Sh)
    If Err.Number <> 0 Then
        ShExists = False
    Else
        ShExists = True
    End If
End Function
Edit:
Sayfayı, kapalı başka bir dosyada olup olmadığını kontrol ediyormuşunuz. Bunu şimdi fark ettim. Benim önerim, kodun yazıldığı dosyada geçerlidir.

Kapalı dosyadaki sayfa isimlerini başka bir yöntemle bulmak gerekir (ADO gibi...)
 

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
İşinizi biraz daha kolaylaştırmak amacıyla, yukarıda bahsettiğim linkteki kodları sizin için revize ettim.

Bu kodlarla, kapalı durumdaki C:\Temp\Test2.xls dosyasında Data isimli bir sayfanın olup, olmadığı belirlenmektedir.

Kod:
 Sub Test()
    'Raider ®
    Dim MyFile As String, strSheet As String
    MyFile = "C:\Temp\Test2.xls"
    strSheet = "Data"
    If Dir(MyFile) = Empty Then
        MsgBox MyFile & " dosyasi bulunamadi ..."
        Exit Sub
    End If
    If CheckShName(MyFile, strSheet) Then
        MsgBox strSheet & " sayfasi " & MyFile & " dosyasinda bulundu!", vbInformation
    Else
        MsgBox strSheet & " sayfasi " & MyFile & " dosyasinda bulunamadi!", vbInformation
    End If
End Sub
'
Function CheckShName(WBName As String, MySh As String) As Boolean
    'Raider ®
    Dim objConn As Object
    Dim objCat As Object
    Dim tbl As Object
    Dim sConnString As String
    Dim sSheet As String
    Dim MyVal As Boolean
    Set objConn = CreateObject("ADODB.Connection")
    Set objCat = CreateObject("ADOX.Catalog")
    sConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                  "Data Source=" & WBName & ";" & _
                  "Extended Properties=Excel 8.0;"
    objConn.Open sConnString
    Set objCat.ActiveConnection = objConn
        For Each tbl In objCat.Tables
            sSheet = tbl.Name
            sSheet = Application.Substitute(sSheet, "'", "")
            sSheet = Left(sSheet, InStr(1, sSheet, "$", 1) - 1)
            If LCase(sSheet) = LCase(MySh) Then
                MyVal = True
                Exit For
            End If
        Next tbl
    objConn.Close
    CheckShName = MyVal
    Set objCat = Nothing
    Set objConn = Nothing
End Function
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,049
Excel Vers. ve Dili
Office 2013 İngilizce
Teşekkür ederim.

Kodlar bu şekliyle gayet güzel çalışıyor.

Bu kodları kullanarak kendime göre bir rapor oluşturmayı planlıyordum. bu çalışmayı henüz yapma fırsatı bulamadığım için geri dönüş yapmayı geciktirdim. Ã?zür dilerim

Kendi kendimize geliştirebileceğimiz; ADO ile ilgili olarak önerebileceğiniz bir kaynak varmıdır. Bu ADO olayını nasıl öğrenebiliriz?


Selamlar, İyi Çalışmalar.
 
Üst