Avatar billede tkaas Nybegynder
10. august 2010 - 10:10 Der er 13 kommentarer og
1 løsning

Makro/VBA til automatisk oprettelse af pdf-dokument

Jeg har office 2007 og Adobe acrobat 9 Standard. Jeg kan manuelt gå ind og gemme et regneark som pdf og jeg kan vælge, at det fx kun skal være de tre første faneblade, der skal gemmes i pdf-filen. Men jeg har rigtig mange regneark, hvor jeg - for alle - vil have gemt de tre første faneblade (de er navngivet på samme måde i alle regnark). Kan dette automatiseres med en makro eller noget VBA-programmering, så man fx kan klare arbejdet ved at åbne regnearket, køre makroen og lukke regnearket igen?
Avatar billede supertekst Ekspert
10. august 2010 - 11:22 #1
Ja - skulle nok kunne lade sig gøre.
Avatar billede supertekst Ekspert
10. august 2010 - 12:46 #2
Version 1

Public Sub xlsTilPdf()
Dim stiNavn As String, filNavn As String, fil As String, sti As String
Dim temp As Variant, xlsObj As Object

    stiNavn = Application.GetOpenFilename          'ønskede fil udpeges
    temp = Split(stiNavn, "\")
    filNavn = temp(UBound(temp))
    temp = Split(filNavn, ".")
    fil = temp(0)
    temp = Split(stiNavn, filNavn)
    sti = temp(0)                  'kan erstattes af anden sti
   
    Set xlsObj = CreateObject("Excel.application")
    xlsObj.Workbooks.Open stiNavn
   
    xlsObj.ActiveWorkbook.Sheets(Array("Ark1", "Ark2", "Ark3")).Select
   
    xlsObj.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        sti & fil & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

    xlsObj.Application.Quit
    Set xlsObj = Nothing
End Sub
Avatar billede tkaas Nybegynder
10. august 2010 - 13:10 #3
Supertekst - det ser godt ud. Jeg har lagt den ind i et regneark, og den åbner fint nok og beder om at få udpeget filen. Men jeg kan vist ikke finde ud af at navngive pdf-dokumentet rigtigt. Kan du vise, hvordan det skal skrives ind, hvis det fx skal placeres på adressen c:\test.pdf

Jeg formoder, at jeg kan lægge en tastaturgenvej (fx ctrl + h) ind, men hvor skal den placeres?
Avatar billede supertekst Ekspert
10. august 2010 - 13:34 #4
vender tilbage med version 2

Genvej til kald af VBA-koden eller? Alt+F8 - afspil xlsTilPdf
Avatar billede supertekst Ekspert
10. august 2010 - 13:43 #5
Rem Version 2
Rem =========
Public Sub xlsTilPdf()
Const gemSti = "C:\"

Dim stiNavn As String, filNavn As String, fil As String, sti As String
Dim temp As Variant, xlsObj As Object

    stiNavn = Application.GetOpenFilename          'ønskede fil udpeges
    temp = Split(stiNavn, "\")
    filNavn = temp(UBound(temp))                    'filens for- & efternavn
   
    temp = Split(filNavn, ".")
    fil = temp(0)                                  'filens fornavn
   
    Set xlsObj = CreateObject("Excel.application")
    xlsObj.Workbooks.Open stiNavn
   
    xlsObj.ActiveWorkbook.Sheets(Array("Ark1", "Ark2", "Ark3")).Select
   
    xlsObj.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        gemSti & fil & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

    xlsObj.Application.Quit
    Set xlsObj = Nothing
End Sub
Avatar billede tkaas Nybegynder
10. august 2010 - 14:00 #6
Tak for indsatsen, men jeg misforstår måske noget, for det virker ikke endnu.
Hvor meget skal jeg selv udfylde, for at få den til at køre på min pc?
Avatar billede supertekst Ekspert
10. august 2010 - 14:19 #7
VBA-koden lægges under ark1 i XLSM-fil.

Er sikkerhedsniveauet justeret - så makroer kan anvendes?
Avatar billede tkaas Nybegynder
10. august 2010 - 14:33 #8
Ja, makroer kan anvendes.
Jeg regner med, at jeg skal gøre sådan her:
Åbne et tomt dokument.
Oprette en makro. Åbne den for redigering og indsætte din tekst. Gemme den og afspille den.
Først kommer der et vindue frem, hvor jeg skal åbne en fil. Jeg formoder det er filen med fanebladene, jeg vil have gemt. Jeg udpeger den, og der kommer et øjeblik en besked, om at en fil konverteres.
Dernæst kommer der et dialogvindue med Runtime error 438, og når jeg trykker på Debug, er dette highlightet med gult:

    xlsObj.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        gemSti & fil & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True

Mit spørgsmål var: Skal jeg selv skrive noget om i din kode - tilføje et filnavn eller noget i den retning?
Avatar billede supertekst Ekspert
10. august 2010 - 14:54 #9
Det skulle ikke være nødvendig - runtime error 438 skal under-søges - vender tilbage. Jeg har ingen problemer med afviklingen.
Avatar billede supertekst Ekspert
10. august 2010 - 15:02 #10
Hedder dine faneblade andet end:
xlsObj.ActiveWorkbook.Sheets(Array("Ark1", "Ark2", "Ark3")).Select


Object doesn't support this property or method (Error 438)

Not all objects support all properties and methods. This error has the following cause and solution:


You specified a method or property that doesn't exist for this Automation object.
See the object's documentation for more information on the object and check the spellings of properties and methods.

You specified a Friend procedure to be called late bound.
The name of a Friend procedure must be known at compile time. It can't appear in a late-bound call.
Avatar billede tkaas Nybegynder
10. august 2010 - 16:44 #11
Nej - de hedder Ark1, Ark2 og Ark3
Hvis du orker mere, så har jeg lagt en zippet mappe med en testfil, der skal have ektraheret tre ark samt "min" fil med din makro. Det kan være, det er lettere for dig at se på den måde, hvorfor det ikke virker for mig, når det burde.
www.kaasogmulvad.dk/unv/test/eksperten.zip
Avatar billede supertekst Ekspert
10. august 2010 - 17:43 #12
Ja - jeg gør - det virker som det skal - uden problemer.

Har du prøvet at starte med Alt+F8 fra "Systemfilen" - eller anvender du en knap/genvej?
Avatar billede tkaas Nybegynder
10. august 2010 - 17:54 #13
jeg har prøvet begge dele. jeg havner samme sted. gad vide, om det er fordi, jeg har både excel 2003 og 2007 installeret?
du får selvfølgelig point - ikke bare fordi du tilsyneladende har den rigtige løsning (selv om den ikke virker her), men også fordi du da virkelig har prøvet at få det til at virke.
Men øv, altså...
Avatar billede supertekst Ekspert
10. august 2010 - 18:06 #14
Tak - som en lille trøst kan jeg prøveat sende dig resultatet.

Anvender du 2003?
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