Avatar billede swamboo Seniormester
23. september 2019 - 20:39 Der er 2 kommentarer og
1 løsning

Tjek om filnavn findes

Hej

Jeg har en mappe som indeholder filer som f.eks. hedder
17-18.xlsx
19-20.xlsx
Jeg forsøger at finde en stump kode som kan tjekke om variablen "Ark" indgår i filerne i denne mappe.
"Ark" kan f.eks. have værdien 19

Er der en let måde til ovenstående?


(Og et tillægs spørgsmål)
hvis jeg bruger komandoen:

        Set RapFil = Workbooks.Open(Myfolder & "\rapporter\18-19.xlsx", UpdateLinks:=False, ReadOnly:=True)

Kan man så undgå at den åbner arket, men bare indlæser i baggrunden?

På forhånd 10000 tak!!! :-)
Avatar billede M.O Seniormester
24. september 2019 - 11:47 #1
Jeg har brugt koden fra dette link

https://stackoverflow.com/questions/14245712/cycle-through-sub-folders-and-files-in-a-user-specified-root-directory

Du kan rette Mask = "*ark*.xlsx"


Sub Demo()
    Dim fso As Object 'FileSystemObject
    Dim fldStart As Object 'Folder
    Dim fld As Object 'Folder
    Dim fl As Object 'File
    Dim Mask As String

    Set fso = CreateObject("scripting.FileSystemObject") ' late binding
    'Set fso = New FileSystemObject 'or use early binding (also replace Object types)

    Set fldStart = fso.GetFolder("C:\Your\Start\Folder") ' <-- use your FileDialog code here

    Mask = "*.xls"
    Debug.Print fldStart.Path & "\"
    ListFiles fldStart, Mask
    For Each fld In fldStart.SubFolders
        ListFiles fld, Mask
        ListFolders fld, Mask
    Next
End Sub


Sub ListFolders(fldStart As Object, Mask As String)
    Dim fld As Object 'Folder
    For Each fld In fldStart.SubFolders
        Debug.Print fld.Path & "\"
        ListFiles fld, Mask
        ListFolders fld, Mask
    Next

End Sub

Sub ListFiles(fld As Object, Mask As String)
    Dim fl As Object 'File
    For Each fl In fld.Files
        If fl.Name Like Mask Then
            Debug.Print fld.Path & "\" & fl.Name
        End If
    Next
End Sub
Avatar billede swamboo Seniormester
24. september 2019 - 21:00 #2
Hej.

Super med ovenstående! Jeg har ikke afprøvet det endnu. Dette kommer jeg nok til at arbejde med de næste par aftener.

Er det OK herinde at markere som løsning for link og eksempel uden at have prøvet om det virker? Eller skal jeg vente til jeg får det testet og det virker??

Tak for eksemplet - jeg har ledt længe efter et sådant eksempel...

Mvh.
Frank :-)
Avatar billede M.O Seniormester
26. september 2019 - 15:40 #3
Du bestemmer selv om du mener forslaget er løsningen. :-)

Jeg smider lige et forslag mere hvor jeg har tilrettet at excel filer der inderholder ark i filnavnet åbnes og lukkes


Sub Demo()
    Dim fso As Object 'FileSystemObject
    Dim fldStart As Object 'Folder
    Dim fld As Object 'Folder
    Dim fl As Object 'File
    Dim Mask As String

    Set fso = CreateObject("scripting.FileSystemObject") ' late binding
    'Set fso = New FileSystemObject 'or use early binding (also replace Object types)
Set fldStart = fso.GetFolder("C:\Users\mo\Desktop\mappe") ' <-- use your FileDialog code here

    Mask = "*ark*.xlsx"
    Debug.Print fldStart.Path & "\"
    ListFiles fldStart, Mask
    For Each fld In fldStart.SubFolders
        ListFiles fld, Mask
        ListFolders fld, Mask
    Next
End Sub


Sub ListFolders(fldStart As Object, Mask As String)
    Dim fld As Object 'Folder
    For Each fld In fldStart.SubFolders
        Debug.Print fld.Path & "\"
        ListFiles fld, Mask
        ListFolders fld, Mask
    Next

Msgbox "Slut"

End Sub

Sub ListFiles(fld As Object, Mask As String)
    Dim fl As Object 'File
    For Each fl In fld.Files
        If fl.Name Like Mask Then
Debug.Print fld.Path & "\" & fl.Name
           
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Workbooks.Open Filename:=fld.Path & "\" & fl.Name
' Skriv din kode her

Application.ScreenUpdating = True
Application.DisplayAlerts = True
ActiveWorkbook.Close False
           
        End If
    Next
End Sub

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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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