Avatar billede oleelo Nybegynder
22. juli 2010 - 18:13 Der er 9 kommentarer og
1 løsning

søg efter filer med et bestemt indhold

Hej
Jeg ønsker at lave et lille vb-program som kan liste alle excel filer men et bestemt indhold ( eks 12323 ) fra et fast katalog.
Hvordan søger jeg efter et indhold i en file , styresystemet er XP.
mvh oleelo
Avatar billede supertekst Ekspert
22. juli 2010 - 18:43 #1
Mener du VBA eller ren VB?
Avatar billede oleelo Nybegynder
22. juli 2010 - 18:53 #2
Hej
Jeg mener VB men en VBA løsning ville vel let kunne overføres til VB.
mvh oleelo
Avatar billede supertekst Ekspert
22. juli 2010 - 18:59 #3
Arbejder kun med VBA - så ??
Avatar billede oleelo Nybegynder
22. juli 2010 - 19:13 #4
Hej
Hvis du har et forslag til en løsning i vba kan jeg godt bruge den.
Det jeg er ude efter, svare til en liste af file som også kan fåes i stifinder hvis der søges efter indholdet af en file.
Jeg tror der skal bruges noget API ?? som jeg intet kender til
mvh oleelo
Avatar billede supertekst Ekspert
22. juli 2010 - 19:49 #5
Hvor skal der søges i bestemte rækker, kolonner, ark eller ..
Avatar billede oleelo Nybegynder
22. juli 2010 - 20:06 #6
I alle og hele regnearket i kataloget C:\MineFiler\
der ligger op til 50 regneark.
mvh oleelo
Avatar billede supertekst Ekspert
22. juli 2010 - 20:16 #7
Ok - vil se på det senere - måske bliver det først i morgen..
Avatar billede supertekst Ekspert
23. juli 2010 - 00:10 #8
Rem Denne kode ligger i Ark1 i separat Excel-fil / separat mappe

Const søgesti = "C:\MineFiler\"
'Const søgesti = "C:\Documents and Settings\pb.KHNBPB\Skrivebord\oleelo\Ny mappe\"
Const startRæk = 2
Const søgeOrdCelle = "C1"

Dim søgeord
Public Sub multiSøgning()
    søgeord = ActiveSheet.Range(søgeOrdCelle)
    If CStr(søgeord) <> "" Then
        udførSøgning
    End If
   
    MsgBox "Søgning er afsluttet"
End Sub
Private Sub udførSøgning()
Dim fs, f, f1, fc, ræk As Long
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(søgesti)
    Set fc = f.Files
   
    ræk = startRæk
   
    For Each f1 In fc
        If InStr(LCase(f1.Name), "xls") > 0 And InStr(f1.Name, "~") = 0 Then
            If søgIFilen(f1.Name) = True Then
                ActiveSheet.Cells(ræk, 1) = f1.Name
                ræk = ræk + 1
            End If
        End If
    Next
End Sub
Private Function søgIFilen(filnavn)
Dim xlsFil As Object, fundet As Boolean
Dim ark As Worksheet, område

    Set xlsFil = CreateObject("Excel.Application")
    With xlsFil
        .Visible = False
        .Workbooks.Open søgesti & filnavn
    End With
   
    søgIFilen = False
   
    For Each ark In xlsFil.ActiveWorkbook.Sheets
        ark.Activate
       
        If søgEfter(ark, søgeord) = True Then
            søgIFilen = True
            Exit For
        End If
    Next ark
   
    xlsFil.Application.Quit
    Set xlsFil = Nothing
End Function
Private Function søgEfter(ark, søgeord)
    With ark.Range("A1:IV65000")
        Set c = .Find(søgeord, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            søgEfter = True
        Else
            søgEfter = False
        End If
    End With
End Function
Avatar billede oleelo Nybegynder
26. juli 2010 - 23:09 #9
Hej
Har testet koden og den virker :-).
Smid et svar , tak for hjælpen
mvh oleelo
Avatar billede supertekst Ekspert
26. juli 2010 - 23:17 #10
Hej igen - fint og selv tak..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester