Avatar billede sjssjdk Mester
01. februar 2017 - 08:16 Der er 3 kommentarer

Gem sheet med macroer intakt

Hej.

Jeg mangler en macro der opretter en kopi af et sheet til en ny workbook.
Der er en del macroer some virker på dette sheet, som modules, de skal kopires med.

Arket skal ikke gemmes, det skal man selv vælge efterfølgende. Så udelukkede en macro der laver en kopi af et bestemt sheet som tillader at macroerne stadig virker i det nye ark.

Macroerne er lavet som modules.

På forhånd tak for hjælpen.
Avatar billede excelent Ekspert
04. februar 2017 - 08:53 #1
For mig at se svarer det til at du sletter alle ark du ikke skal bruge
og så gemme det aktuelle med nyt navn.

Det kan du evt. gøre med et specifik Ark: her Ark1

Sub kopierA()
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "Ark1" Then sh.Delete
Next
End Sub

Eller med det aktive ark :

Sub kopierB()
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Sheets
If sh.Name <> ActiveSheet.Name Then sh.Delete
Next
End Sub
Avatar billede sjssjdk Mester
07. februar 2017 - 13:00 #2
Ja det var en måde at gøre det på.

DOG, vil jeg meget gerne af orginalen bevares.
Så der skal laves en kopi af arket, det skal bare ikke gemmes, det er op til en selv hvor / hvordan man vil gemme det.

Kan du hjælpe med denne tilføjelse også?
Avatar billede excelent Ekspert
07. februar 2017 - 19:39 #3
Nej du kan ikke ændre navnet på den aktuelle projektmappe
Først nå du gemmer denne får du mulighed for at ændre filnavn

Følgende kode er det nærmeste jeg kan komme på ønsket resultat


Sub kopierWB()
'Gemmer denne projektmappes navn i variablen navn
navn = ThisWorkbook.Name

'Åbner SaveAs dialog hvor nyt navn er forvalgt (test2.xlsm) ret sti og filnavn til ønsket
Application.Dialogs(xlDialogSaveAs).Show arg1:="C:\Users\Poul\Desktop\test2.xlsm"
'Sti og filnavn kan ændres igen i dialogen der dukker op

'Tester om der gemmes eller klikkes cancel.
'Hvis der gemmes, så slettes alle ark untaget Ark2
If navn <> ThisWorkbook.Name Then
Application.DisplayAlerts = False
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "Ark2" Then sh.Delete '(ret til aktuel ark som skal beholdes)
Next
Application.DisplayAlerts = True

'Filen gemmes igen nu kun med valgt ark
ActiveWorkbook.Save

End If
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