Avatar billede gladhund Nybegynder
18. september 2010 - 11:16 Der er 15 kommentarer og
1 løsning

Gemme SaveAs string ved oprettelse af ny Workbook fra eksisterende

Hep,

Jeg har følgende kode, som hvor brugeren bliver spurtgt TO gange om gem placering og filnavn, for at jeg kan gemme den valgte sti+filnavn. Kan nogen gøre sådan, at brugeren kun bliver spurgt en gang, sti+filnavn bliver gemt og den nye workbook bliver gemt?

Og et tillægsspgm: Jeg vil gerne gør præcis det samme med et Word-dokument og et PowerPoint dokument.
Avatar billede gladhund Nybegynder
18. september 2010 - 11:17 #1
Sub opretnyexcel()

Dim wbMother As Workbook
Dim wbNew
Dim excelfilnavn As String

Set wbMother = ActiveWorkbook  '(eller ThisWorkbook)

Workbooks.Add
excelfilnavn = Application.GetSaveAsFilename()
Set wbNew = ActiveWorkbook
ActiveWorkbook.Close savechanges:=True

wbMother.Activate

Sheets("Dokumentation").Range("F7").Value = excelfilnavn

MsgBox ("Dokumentet " & excelfilnavn & "er oprettet.")

Set wbActive = Nothing
Set wbNew = Nothing

End Sub
Avatar billede anlu Nybegynder
18. september 2010 - 13:22 #2
Når jeg kører din kode bliver jeg kun spurgt om filnavn og lokation en enkelt gang. Kan du se ved at steppe igennem koden hvilken kodelinje der giver anledning til at brugeren spørges ud over GetSaveAsFilename-kaldet?
Avatar billede gladhund Nybegynder
18. september 2010 - 14:36 #3
Sorry, jeg tror jeg ændrede lidt i det før jeg postede her... Den spørger kun een gang, rigtigt. Problemet er, at den ikke gemmer filen! Da jeg havde kode der spurgte to gange, gemte den nemlig filen - det gør den ikke nu. Så det jeg har brug for er, at den gemmer den nye excel-fil (og også gerne det samme for en word og en pp fil :).
Avatar billede gladhund Nybegynder
18. september 2010 - 14:42 #4
Undskyld igen for fejlen...
Avatar billede anlu Nybegynder
18. september 2010 - 15:58 #5
Nå ja det kan jeg godt se. Da du bare opretter en blank workbook skal du nok gemme mere eksplicit før du lukker den. Dvs. indsæt

  wbNew.SaveAs excelfilnavn

lige før linjen

  ActiveWorkbook.Close savechanges:=True

Så bliver den nye workbook gemt. Men er det bare det du vil - altså gemme en blank workwook?
Avatar billede gladhund Nybegynder
18. september 2010 - 16:39 #6
Yes, jeg vil bare gemme en blank workbook. Jeg laver en lille app hvor man kan oprette nye filer eller filer fra skabeloner, så de bliver registreret og koblet sammen.

Ved du også hvordan man gør det samme for et word og et pptx dokument?
Avatar billede gladhund Nybegynder
18. september 2010 - 16:45 #7
Det virker næææsten. Der gemmes godt nok en fil, men men uden endelse - kun med et punktum... Hvis den lige somehow får en xlsx på, så er den der for excel-filen!
Avatar billede anlu Nybegynder
18. september 2010 - 16:53 #8
For at styre endelsen, så giv GetSaveAsFilename en parameter med der angiver et filter:

excelfilnavn = Application.GetSaveAsFilename(fileFilter:="Excel Workbooks (*.xlsx), *.xlsx")

Mht. at lave et word og pptx-dokument skal du have fat i Word og Powerpoint - lidt som du havde gang i med det andet spørgsmål, hvor du ville kopiere word-dokumenter. Vender lige tilbage med detaljer.
Avatar billede anlu Nybegynder
18. september 2010 - 17:19 #9
Oprette nyt worddoc efter samme skabelon - husk at sætte referencen til "Microsoft Word 12.0 Object Library".

Sub OpretNytWorddoc()

    Dim objWord As Word.Application
    Dim docWord As Word.Document

    Dim filnavn As String
   
    filnavn = Application.GetSaveAsFilename(fileFilter:="Word document (*.docx), *.docx")
   

    Set objWord = New Word.Application
    objWord.Visible = False
    Set docWord = objWord.Documents.Add
    docWord.SaveAs filnavn
    docWord.Close SaveChanges:=True
   
    objWord.Application.Quit wdDoNotSaveChanges
    Set objWord = Nothing
   
End Sub

Og så kan man lave næsten det samme for ppt - her skal du så sætte en reference til "Microsoft Powerpoint 12.0 Object Library":

Sub OpretNyPPTpres()

    Dim objPPT As PowerPoint.Application
    Dim docPPT As PowerPoint.Presentation

    Dim filnavn As String
   
    filnavn = Application.GetSaveAsFilename(fileFilter:="Powerpoint presentation (*.pptx), *.pptx")
   

    Set objPPT = New PowerPoint.Application
    Set docPPT = objPPT.Presentations.Add
    docPPT.SaveAs filnavn
    docPPT.Close
   
    objPPT.Quit
    Set objPPT = Nothing
   
End Sub
Avatar billede gladhund Nybegynder
19. september 2010 - 10:42 #10
Fantastisk :)! Jeg arbejder det lige ind i min kode og melder tilbage...
Avatar billede gladhund Nybegynder
19. september 2010 - 12:49 #11
Det spiller max, så svar endelig :). Har ikke testet powerpoint løsningen endnu, men selvfølgelig virker den også! Tusind tak for hjælpen!
Avatar billede anlu Nybegynder
19. september 2010 - 14:24 #12
Det var så lidt :o)
Avatar billede gladhund Nybegynder
19. september 2010 - 15:12 #13
By the way, angående den anden tråd med Word - kan jeg få dig til at sige hvordan jeg får filnavnet alene ud fra den sti her (fx "dokument1.docx")

nytnavn = Application.GetSaveAsFilename(fileFilter:="Word document (*.docx), *.docx")

nytnavn er hele stien, og jeg kan ikke bare skrive nytnavn.Name...
Avatar billede gladhund Nybegynder
19. september 2010 - 15:35 #14
og det kan både være Word, Excel og PowerPoint der er tale om.. :)
Avatar billede gladhund Nybegynder
19. september 2010 - 19:26 #15
Nevermind - jeg fandt en løsning her inde :)
Avatar billede anlu Nybegynder
19. september 2010 - 19:55 #16
godt - for jeg havde ikke set dine kommentarer efter svaret. Opdagede det først da jeg fik en mail på din sidste kommentar :o)
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