Avatar billede Nuser2008 Mester
27. juli 2018 - 18:01 Der er 1 kommentar

Loop imellem filer

Hej

Jeg har brug for hjælp til at kunne loop'e mellem filer.

Jeg har en fil-mappe med 9 Excel-filer, der alle har samme opbygning mht. sheets. Filnavnene starter enten med: FF eller: PBA

Jeg skal have udført samme procedure på et sheet. Sheet-navnet er det samme i alle filerne. Et sheet navn kunne være: dk obl

Den procedure jeg skal have udført er indsættelse af en formel i en bestemt celle i hvert sheet.

Jeg har forsøgt mange forskellige loop-opsætninger, der skal "fange" hver fil. Men loops virker ikke. Jeg når kun til den første fil, hvorefter koden "kører i ring" på samme fil, indtil den afslutter loop'et.

Har I et forslag til, hvordan et loop skal opbygges?

På forhånd mange tak for jeres hjælp.
Avatar billede Nuser2008 Mester
27. juli 2018 - 18:58 #1
Hej

Jeg har fundet en løsning, hvor jeg looper mellem filer med samme sheet-navn, udfører en procedure, og dernæst looper til filerne igen, hvor jeg så har en procedure for næste sheet. Koden kan sikkert skrives smartere, men nedenstående virker ift. formålet.

Sub AFKAST_loop()

    Dim myValue1 As Variant
    myValue1 = InputBox("Indtast årstal (YYYY)")
   
    Dim myValue2 As Variant
    myValue2 = InputBox("Indtast kvartal (DD.MM.YYYY)")

    Windows("FF Kbhx").Activate

    Dim folderPath As String
    Dim filename As String
    Dim wb As Workbook
 
    folderPath = "I:\Ledelse\Management Support\Afkastrapportering\Byg VBA\Test"
   
    If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\"
   
   
    filename = Dir(folderPath & "*.xls")
    Do While filename <> ""
 
    Worksheets("dk obl").Activate

    ActiveSheet.Range("B2").Activate
    ActiveCell.Formula = "='I:\Ledelse\Management Support\Afkastrapportering\" &
    myValue1 & "\" & myValue2 & "\" & "[intervaller.xls]Sheet1'!B2"

    Selection.AutoFill Destination:=Range("B2:B11"), Type:=xlFillDefault
   
    Range("B2:B11").Select
    Selection.NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "

    ActiveSheet.Range("A1").Activate

    Set wb = Workbooks.Open(folderPath & filename)
       
    filename = Dir
   
    Loop
   
       
    filename = Dir(folderPath & "*.xls")
    Do While filename <> ""

    Worksheets("udl obl").Activate

    ActiveSheet.Range("B2").Activate
    ActiveCell.Formula = "='I:\Ledelse\Management Support\Afkastrapportering\" &
    myValue1 & "\" & myValue2 & "\" & "[intervaller.xls]Sheet1'!E2"

    Selection.AutoFill Destination:=Range("B2:B11"), Type:=xlFillDefault
   
    Range("B2:B11").Select
    Selection.NumberFormat = "#,##0.00_ ;[Red]-#,##0.00 "

    ActiveSheet.Range("A1").Activate
   
    Worksheets("data").Activate

    Set wb = Workbooks.Open(folderPath & filename)
       
    filename = Dir
   
    Loop

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

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