• DİKKAT

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

İ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?
 
GÜnaydın.
Güncel yardım edebilirseniz sevinirim.
 
GÜnaydın.
Güncel yardım edebilirseniz sevinirim.
 
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:
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.
 
&#199;al&#305;&#351;an &#246;rnek yukar&#305;daki mesaj&#305;mda eklidir.
 
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.
 
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.
 
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.
 
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.
 
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.
 
g&#252;ncel yard&#305;m edebilirseniz sevinirim.
 
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:
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?
 
Geri
Üst