Avatar billede rotroc Nybegynder
10. december 2008 - 20:09 Der er 7 kommentarer og
1 løsning

VBA kode der gemmer Aktivt Sheet i ny Excel fil

Hej Eksperter.

På arket "Result" har jeg oprettet en CommandButton kaldet "Save Sheet".

Jeg ønsker at når bruger klikker denne skal han kunne gemme det Aktive Sheet "Result" og kun dette.(ikke de andre Sheets i samme Workbook!) Jeg forestiller mig en funktionalitet a la GetSaveAsFilename - altså hvor man får mulighed for at angive sti og fil navn via et dialogbox.

Det er kun det aktive Sheet "Result" som skal gemmes i en ny Excel fil ikke andre sheets eller makroer som ligger bag ved de beregnede værdier som er vist i cellerne på Arket "Result"
- men hvordan kan man gøre dette ??
Avatar billede lerskov Praktikant
10. december 2008 - 20:48 #1
Public Sub Gem_side()

Dim filnavn As String
Dim mappe As String

mappe = "c:\" ' ændres til ønsket placering på drev
filnavn = InputBox("Navn på filen", "Skal arket gemmes")

Sheets("Ark1").Copy 'ændres til dit ark navn

ActiveWorkbook.SaveAs Filename:=mappe & filnavn

End Sub
Avatar billede rotroc Nybegynder
11. december 2008 - 20:46 #2
Ok - vha koden får jeg taget en kopi af Ark1 og kan herefter gemme dette.
Dog er problemet at jeg på Ark1 har tre CommandButtons med makroer
der forbinder Ark1 med nogle andre Ark vha tabelopslag.Disse andre Ark bliver ikke kopieret med over i den nye WorkBook og skal heller ikke.

Kunne det tænkes at jeg i stedet laver et navngivent område og alene lader de talværdier i området komme over i det nye Ark der gemmes?

En anden ting er at der er flere brugere af denne Excel fil og ikke alle vil have kopi af Ark1 gemt samme sted som koden gør.

Kan man lave en funktion hvor man får samme dialog boks som når man vælger Gem Som på på værktøjslinien - altså får mulighed for at angive sti og filnavn  ?
Avatar billede excelent Ekspert
11. december 2008 - 21:35 #3
Sub ArkCopy()
Application.SheetsInNewWorkbook = 1
Cells.Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.SheetsInNewWorkbook = 3
Range("A1").Select
Application.Dialogs(xlDialogSaveAs).Show
End Sub
Avatar billede rotroc Nybegynder
14. december 2008 - 20:23 #4
excelent så er jeg næsten i mål.
Et sidste ønske vil fulende.
I Cellen F3 på arket "Result" har jeg en textbox hvor brugeren kan skrive nogle
kommentare til de udregnede værdier. Denne textbox må meget gerne komme med over i det nye Ark.

På samme måde har jeg også et billede "Picture2" indsat i Arket "Result"  - det vil være super hvis også dette kunne indsættes i det nye Ark i celle C30.

Kan det lade sig gøre ?
Avatar billede excelent Ekspert
16. december 2008 - 17:30 #5
Billeder og tekstbokse kopieres også med
hvis der er flere som ikke skal med, kan de slettes
hvis de ikke placeres rette sted, kan de flyttes
?
Avatar billede rotroc Nybegynder
16. december 2008 - 19:10 #6
Nej desværre kommer min textbox "Comments" ikke med og heller ikke "Picture2".
Jeg kan se at det er muligt at justere den fysiske placering af sådanne objekter på et Sheet via objekternes Properties, men sagen er at de ikke kommer med. Jeg tænkte om det vil være muligt at indsætte en linie hvor de to objecter Selectes - Kopieres - Indsættes i det nye Ark, har forsøgt men uden held og har derfor slettet koderne igen da der kom fejl.

Du får lige hele koden her, den kører OK i denne form - jeg måtte hustle mig igennem vha makrooptager for at hitte nogle af koderne. Bemærk: Jeg har navngivet området der skal kopieres til "ResultRange"

Sub SaveSheetAs_Click()
Application.SheetsInNewWorkbook = 1
Worksheets("Result").Range("ResultRange").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.Copy
Workbooks.Add
Range("D2").Select
'Indsæt kun nummerværdier og uden formler
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
'Indsæt samme celleformat
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
Application.SheetsInNewWorkbook = 3
Application.Dialogs(xlDialogSaveAs).Show
' tilpas kolonner og cellebredde så de svare til kildearkets
    Rows("23:23").EntireRow.AutoFit
    Rows("24:24").EntireRow.AutoFit
    Rows("24:24").EntireRow.AutoFit
    Rows("24:24").RowHeight = 52.5
    Columns("D:D").EntireColumn.AutoFit
    Columns("E:E").EntireColumn.AutoFit
    Columns("F:F").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Rows("24:24").RowHeight = 29.25
    Columns("D:D").ColumnWidth = 38.14
    Columns("E:E").ColumnWidth = 20.86
    Columns("G:G").ColumnWidth = 23.14
    Columns("F:F").ColumnWidth = 19.86
    Range("D2:G2").Select
    ActiveCell.FormulaR1C1 = _
        "Result Sheet Calculation of Non Standard Material  Ver. 1.0"
    With ActiveCell.Characters(Start:=1, Length:=51).Font
        .Name = "Calibri"
        .FontStyle = "Regular"
        .Size = 20
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    With ActiveCell.Characters(Start:=52, Length:=8).Font
        .Name = "Calibri"
        .FontStyle = "Regular"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
         
End Sub
Avatar billede rotroc Nybegynder
19. december 2008 - 13:01 #7
excelent - foreløbig tak for hjælpen, jeg forsøger mig frem herefter.
Smid et svar og der er point til dig
Avatar billede excelent Ekspert
20. december 2008 - 17:35 #8
Min kode udvidet til at kopiere et billede

Sub ArkCopy()
Application.SheetsInNewWorkbook = 1
Range("A1:H40").Select
Selection.Copy
Workbooks.Add
navn = ActiveWorkbook.Name
ActiveSheet.Paste
Application.SheetsInNewWorkbook = 3
Range("A1").Select

ThisWorkbook.Activate
Sheets("Ark1").Shapes("Picture 4").Select ' ret til aktuel billede navn
Selection.Copy
Workbooks(navn).Activate
Range("G15").Select
ActiveSheet.Paste
Application.Dialogs(xlDialogSaveAs).Show

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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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