19. november 2025 - 16:33Der 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**
' --- 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
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 :
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.
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.
#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
' Å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
Synes godt om
1 synes godt om dette
Ny brugerNybegynder
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.