Avatar billede flras Novice
19. november 2025 - 16:33 Der er 4 kommentarer og
1 løsning

Hjælp til tricky VBA-kode

Jeg er lykkedes med at lave nedenstående VBA kode som udfører 2 handlinger.
Først navndøber den det aktuelle ark til værdien i celle I5 - den fungerer fint.
Dernæst kopierer den arket til en anden excel-mappe, men her "glemmer" Excel navnet på arket og indsætter det med seneste arknavn i destinationsmappen efterfulgt af (2) pga. dublet.

Hvem kan løse at den blot husker navnet og indsætter med det rigtige navn?

Sub KopierArkTilAndenMappe_Oprindelig()

    ' --- Trin 1: Navngiv arket i kildefilen ---
    ' Dette navn vil blive overført til destinationsfilen
    ActiveSheet.Name = Range("I5").Value

    Dim MappeDest As Workbook ' Deklarer variablen for destinationmappen
    ' Dim ArkDest As Worksheet ' Denne variabel er ikke nødvendig for denne logik
    Dim FilSti As String      ' Deklarer variablen for filstien
    Dim FilNavn As String    ' Deklarer variablen for filnavnet
   
    ' --- Sæt filsti og filnavn for destinationsmappen ---
    FilSti = "C:\Users\fr\Desktop\" ' **VIGTIGT: Erstat med den faktiske sti**
    FilNavn = "Projektoverblik.xlsx" ' **VIGTIGT: Erstat med filnavnet**
   
    ' --- Åbn destinationsmappen ---
    Set MappeDest = Workbooks.Open(FilSti & FilNavn)
       
    ' --- Kopiér det aktuelle regneark til destinationsmappen ---
    ' Arket kopieres med det navn, det fik i trin 1.
    ActiveSheet.Copy After:=MappeDest.Sheets(MappeDest.Sheets.Count)
   
    ' --- Gem destinationsmappen ---
    MappeDest.Save
   
    ' --- Luk destinationsmappen ---
    MappeDest.Close
   
    ' --- Slet de midlertidige variabler ---
    Set MappeDest = Nothing
    ' Set ArkDest = Nothing
   
    MsgBox "Regnearket er kopieret til projektoverblikket og gemt. Arknavnet blev bibeholdt.", vbInformation

End Sub
Avatar billede Dan Elgaard Ekspert
19. november 2025 - 21:32 #1
Kender ikke helt din opbygning af de to ark, men umiddelbart burde det nye ark, som du har kopieret ind i den anden mappe blive det nye sidste ark i mappen ...
... så du burde kunne bruge :

MappeDest.Sheets(MappeDest.Sheets.Count).Name = Range("I5").Value

HOWEVER, der er en mulighed for, at det ark du kopiere over bliver det nye 'ActiveSheet', og så skal du nok gemme navnet fra 'Range("I5").Value' i en variabel først.
Avatar billede ebea Ekspert
19. november 2025 - 22:48 #2
Jeg ville lave lidt om på din kode, til denne her. Husk at ændre stinavnet først (den angivne er blot for test).

Sub KopierArkTilAndenMappe_Oprindelig()

    Dim MappeDest As Workbook
    Dim ArkKildeNavn As String
    Dim Kopi As Worksheet
    Dim FilSti As String
    Dim FilNavn As String
    Dim ws As Worksheet
   
    ' Trin 1: Navngiver arket i kildefilen
    ArkKildeNavn = ActiveSheet.Range("I5").Value
    ActiveSheet.Name = ArkKildeNavn
   
    ' Filsti og navn
    FilSti = "F:\test\"
    FilNavn = "Projektoverblik.xlsx"
   
    ' Åbner destinationsmappen
    Set MappeDest = Workbooks.Open(FilSti & FilNavn)
   
    ' Fjerner evt. eksisterende ark med samme navn
    For Each ws In MappeDest.Worksheets
        If ws.Name = ArkKildeNavn Then
            ws.Delete
            Exit For
        End If
    Next ws
   
    ' Kopierer arket
    ActiveSheet.Copy After:=MappeDest.Sheets(MappeDest.Sheets.Count)
   
    ' Den nye kopi bliver aktiv
    Set Kopi = MappeDest.ActiveSheet
   
    ' Omdøber arket igen
    On Error Resume Next
    Kopi.Name = ArkKildeNavn
    On Error GoTo 0
   
    ' Gemmer og lukker
    MappeDest.Save
    MappeDest.Close
   
    MsgBox "Regnearket er kopieret til projektoverblikket, og eventuelle dubletter er fjernet.", vbInformation

End Sub
Avatar billede flras Novice
20. november 2025 - 11:36 #3
Jeg tror "ebea" er tættest på løsningen jeg søger, MEN der er stadig lidt drilleri i koden som jeg håber jeg kan få hjælp til.

Den nye kode har fikset at ark-navnet kommer med over i destinationsfilen, men selve indholdet på arket kommer ikke med. Til gengæld får jeg blot en kopi af det foregående ark i destinationsfilen.

Hvem har et bud på en opdateret kode.
Avatar billede ebea Ekspert
20. november 2025 - 12:40 #4
#3 - Noget fortæller mig, at det du skriver her, og det du har i dit ark, ikke harmonerer sammen.

Koden jeg viste i #2 tager indholdet med fra den .xlsm fil som bruges, og ender op i filen "Projektoverblik.xlsx".

Så at du ikke får indhold med over i "Projektoverblik.xlsx" er det jeg mener med at noget ikke harmonerer sammen med hvad du skriver.

Ellers må du jo uploade din fil, i stedet for at skrive "lidt kryptisk".
Avatar billede ebea Ekspert
24. november 2025 - 09:34 #5
#3 - Her er en opdateret kode, ud fra den info du sendte i privat besked.

Sub KopierArk()

    Dim wbKilde As Workbook
    Dim wsKilde As Worksheet
    Dim wbDest As Workbook
    Dim ws As Worksheet
    Dim ArkKildeNavn As String
    Dim FilSti As String
    Dim FilNavn As String

    Set wbKilde = ThisWorkbook
    Set wsKilde = wbKilde.ActiveSheet

    ' Navngiver arket i kildefilen
    ArkKildeNavn = wsKilde.Range("I5").Value
    On Error Resume Next
    wsKilde.Name = ArkKildeNavn
    On Error GoTo 0

    ' Filsti + filnavn
    FilSti = "F:\test\"
    FilNavn = "Projektoverblik.xlsx"

    ' Åbner destinationsfilen
    Set wbDest = Workbooks.Open(FilSti & FilNavn)

    ' Hvis arket findes, slettes det
    On Error Resume Next
    Set ws = wbDest.Worksheets(ArkKildeNavn)
    If Not ws Is Nothing Then ws.Delete
    On Error GoTo 0

    ' Kopierer arket til destinationsfilen
    wsKilde.Copy After:=wbDest.Sheets(wbDest.Sheets.Count)

    ' Omdøber kopi-siden (den er nu aktiv i wbDest)
    On Error Resume Next
    ActiveSheet.Name = ArkKildeNavn
    On Error GoTo 0

    ' Gemmer og lukker
    wbDest.Save
    wbDest.Close SaveChanges:=True

    MsgBox "Arket er kopieret til Projektoverblik, og gamle kopier blev fjernet.", vbInformation

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

IT-JOB