İstenilern klasdeki xls belgelerinin A1:ZZ1000 aralığında ÇKS metnini içeren dosyalar

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
İstenilern klasdeki xls belgelerinin A1:ZZ1000 aralığında ÇKS metnini içeren dosyaların listesi....

Merhaba excelin içindeki dosya arayı kullanıdım işime yaramadı
Zamanında hazırlşadığım bir dosya var nezamandır ellemediğim için şimdi bulamıyorum yüzlerce dosyayaı açıp incelemekte zor geliyor

Mesala belgelerim klasöründeki xls belgelerinin tüm sayfalarının A1:ZZ1000 aralığında yazılan metni arayacak bir makro varmıdır?
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
GÜnaydın.
Güncel yardım edebilirseniz sevinirim.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
GÜnaydın.
Güncel yardım edebilirseniz sevinirim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Kod:
Private Cn   As Object
Private Rs1  As Object
Private Rs2  As Object
Private Cat  As Object
Private s    As String

Private Sub CommandButton1_Click()
Dim f As Object, d As String
Set f = CreateObject("Shell.Application").BrowseForFolder(0, _
    "Taranacak klsörü seçin", 0)

If f Is Nothing Then Exit Sub
TextBox1 = f.items.Item.Path
s = IIf(Right$(TextBox1, 1) = "\", "", "\")
d = Dir(TextBox1 & s & "*.xls")

While d <> ""
    ListBox1.AddItem d
    d = Dir
Wend
End Sub

Private Sub CommandButton2_Click()
Dim t As Object, i As Integer, j As Long

On Error Resume Next

Set Cn = CreateObject("ADODB.Connection")
Set Rs2 = CreateObject("ADODB.Recordset")
Set Cat = CreateObject("ADOX.Catalog")

For i = 0 To ListBox1.ListCount - 1

Cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _
            TextBox1 & s & ListBox1.List(i, 0)

Cat.ActiveConnection = Cn
    
    For Each t In Cat.Tables
            
            Set Rs1 = Cn.Execute( _
                "Select * from [" & t.Name & "]")
               
            For j = 0 To Rs1.fields.Count - 1
               
                Set Rs2 = Cn.Execute( _
                        "Select [" & Rs1(j).Name & "] from [" & t.Name & "] " & _
                        "where [" & Rs1(j).Name & "] Like '%" & TextBox2 & "%'")
            
                If Rs2.RecordCount > 0 Then
                    ListBox2.AddItem ListBox1.List(i, 0) & "\" & t.Name
                    Rs2.Close
                    Exit For
                End If
                
                Rs2.Close
            Next j
        
        Rs1.Close
    Next t

Cn.Close
Next i

Set Cat = Nothing
Set Rs1 = Nothing
Set Rs2 = Nothing
Set Cn = Nothing

End Sub
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn anemos hocam alakan&#305;z i&#231;in te&#351;ekk&#252;r ederim tr(j) name sat&#305;r&#305;na geldi&#287;inde derlemee hatas&#305; veriyor. g&#246;zatabilirseniz seviniirm.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
&#199;al&#305;&#351;an &#246;rnek yukar&#305;daki mesaj&#305;mda eklidir.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
anemos hocam alakan&#305;za te&#351;ekk&#252;r ederim... yaln&#305;z kontrol ederken textbox i&#231;eri&#287;ini dikkate alm&#305;yor klas&#246;r i&#231;indeki t&#252;m xls belgelerini d&#246;k&#252;yor.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
anemos hocam alakan&#305;za te&#351;ekk&#252;r ederim... yaln&#305;z kontrol ederken textbox i&#231;eri&#287;ini dikkate alm&#305;yor klas&#246;r i&#231;indeki t&#252;m xls belgelerini d&#246;k&#252;yor.
yard&#305;m edebilirseniz sevinirim.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Sn hocam Amac&#305;m&#305; tekrar anlatay&#305;m
Bir metni - Se&#231;ilen Klas&#246;rdeki xls belgelerindeki h&#252;crelerde arayacak ve metni i&#231;eren Kitap-Sayfa Listboxa ekleyecek (&#252;zerine &#231;ift t&#305;klad&#305;&#287;&#305;mda a&#231;arsa fena olomaz) bir program ar&#305;yorum. Yard&#305;m edebilirseniz ger&#231;ekten &#231;ok sevinece&#287;im.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Merhaba,

Dosyalar&#305; a&#231;ma ve kapama zaman&#305; uzamamas&#305; i&#231;in ADO ile SQL y&#252;r&#252;terek &#231;&#246;z&#252;me gitmeyi ama&#231;lam&#305;&#351;t&#305;m. Ancak Excel, di&#287;er standart veritabanlar&#305;nda oldu&#287;u gibi beklenen sonucu vermedi. Yine de baz&#305; ilavelerle sa&#287;l&#305;kl&#305; sonu&#231; &#252;retecek &#231;&#246;z&#252;m olabilir.

&#350;u an i&#231;in dosyalar&#305; gizli a&#231;arak "Find" i&#351;levini kullanmak daha makul &#231;&#246;z&#252;m g&#246;r&#252;n&#252;yor.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
umar&#305;m iste&#287;imi kar&#351;&#305;layacak bir y&#246;ntem en k&#305;sa zamanda bulunur zeki hocam.... Alakan&#305;oza te&#351;ekk&#252;r ederim.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
g&#252;ncel yard&#305;m edebilirseniz sevinirim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Bu haliyle sorun &#231;&#246;z&#252;lm&#252;&#351; g&#246;r&#252;n&#252;yor. E&#287;er hi&#231; hatal&#305; sonu&#231; vermezse kapal&#305; excel dosyalar&#305;nda arama eklentisi yap&#305;labilir.

12.03.2008 21:15 => &#304;yile&#351;tirme yap&#305;ld&#305;.

Kod:
Private Cn   As Object
Private Rs1  As Object
Private rs2  As Object
Private Cat  As Object
Private s    As String

Private Sub CommandButton1_Click()
Dim f As Object, d As String

Set f = CreateObject("Shell.Application").BrowseForFolder(0, _
    "Taranacak kls&#246;r&#252; se&#231;in", 0)

If f Is Nothing Then Exit Sub
TextBox1 = f.Self.Path
s = IIf(Right$(TextBox1, 1) = "\", "", "\")
d = Dir(TextBox1 & s & "*.xls")

While d <> ""
    ListBox1.AddItem d
    d = Dir
Wend
End Sub

Private Sub CommandButton2_Click()
Dim t As Object, i As Integer, j As Integer, a As String

On Error Resume Next

Set Cn = CreateObject("ADODB.Connection")
Set Rs1 = CreateObject("ADODB.Recordset")
Set rs2 = CreateObject("ADODB.Recordset")
Set Cat = CreateObject("ADOX.Catalog")

For i = 0 To ListBox1.ListCount - 1

Cn.Open _
"Driver={Microsoft Excel Driver (*.xls)};DBQ=" & _
            TextBox1 & s & ListBox1.List(i, 0)

Cat.ActiveConnection = Cn
    
    For Each t In Cat.Tables

        If t.Type = "SYSTEM TABLE" Then

            Rs1.Open "Select * from [" & t.Name & "]", Cn, 1, 3
            
            If Rs1.Fields.Count = 1 And Rs1(0).Type = 200 Then GoTo atla
            
            For j = 0 To Rs1.Fields.Count - 1
               a = a & "[" & Rs1(j).Name & "] Like '&#37;" & TextBox2 & "%',"
            Next
            
            a = Replace(StrReverse(Mid$(StrReverse(a), 2, Len(a))), ",", " Or ")
            
            rs2.Open "Select * from [" & t.Name & "] " & _
                        "where " & a, Cn, 1, 3
            
            If rs2.RecordCount > 0 Then _
                    ListBox2.AddItem ListBox1.List(i, 0) & "\" & t.Name
                    
            rs2.Close
atla:
            Rs1.Close

        End If

    Next t

Cn.Close
Next i

Set Cat = Nothing
Set Rs1 = Nothing
Set rs2 = Nothing
Set Cn = Nothing

End Sub
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn Hocam Alakan&#305;za Te&#351;ekk&#252;r ederim.
Belirtilen klas&#246;r&#252;n i&#231;erisindeki xls belgelerini ve &#231;al&#305;&#351;ma sayfalar&#305;n&#305; Aranan S&#246;zc&#252;k k&#305;sm&#305;n&#305; dikkate almadan listeye al&#305;yor. ne yap&#305;labilir?
 
Üst