Avatar billede friis5 Novice
25. oktober 2007 - 13:14 Der er 4 kommentarer og
3 løsninger

VBA PrintToFile PDF problemer

OS: Win2000
Excel: 2002, 10.4524.4219 SP2
Adobe: 7.09

Nu har jeg googlet længe og hårdt, og jeg kan simpelhen ikke finde ud af hvorfor min vba kode ikke virker.

Det den skal kunne, er at printe et bestemt excel ark som pdf fil. Hvilket i sig selv burde være meget nemt.

Men der opstår desværre langt hen af vejen flere forskellige problemer.

Første kode jeg testede så således ud:

Sub prt2pdf()

    Dim objDistiller As Object
    Dim strADB_FileName As String
    Dim strPSFileName As String
    Dim strFileName As String
    Dim logFileName As String
   
    Set objDistiller = CreateObject("Pdfdistiller.PdfDistiller")

    Application.ActivePrinter = "Adobe PDF på Ne01:"
   
    strFileName = test
    logFileName = strFileName & ".log"
    strPSFileName = strFileName & ".ps"
    strADB_FileName = strFileName & ".pdf"
   
    'create postscript file
'    Options.PrintBackground = False
    ActiveWindow.SelectedSheets.PrintOut Copies:=1,_
    PrintToFile:=True, PrToFileName:=strPSFileName

    'convert postscript file to pdf
    objDistiller.FileToPDF strPSFileName, strADB_FileName, ""

    'delete postscript file
    Kill strPSFileName
    Kill logFileName
'    objDistiller.Quit
    Set objDistiller = Nothing

End Sub

Første fejl var at den ikke kan finde ud af linien: Set objDistiller = CreateObject("Pdfdistiller.PdfDistiller"). Hmm, slår jeg så alt med distilleren fra, kommer der en ny fejl 1004 med at der er problemer med fontene.

Ok så, jeg installerede en pdf995 printer, og prøvede igen :)
Ændringer i koden:

    Application.ActivePrinter = "PDF995 på Ne00:"

Først og fremmest kan den snildt lave .ps filen, men når den så skal til konvertere, så laver den problemer igen. Her prøvede jeg med følgende kode:

    ' Convert the postscript file to .pdf
    Dim myPDF As PdfDistiller
    Set myPDF = New PdfDistiller
    myPDF.FileToPDF strPSFileName, strADB_FileName, ""

Men maskinen kløjses igen i hvor den har defineret Pdfdistilleren henne - og jeg sidder fast.

Nogen der kan komme med et bud, hvorfor intet virker :(
Avatar billede word-hajen Nybegynder
25. oktober 2007 - 14:29 #1
Du har remmet linjen med Options.PrintBackground = False ud. Den skal ind igen. Ellers forsøger din (eller min vist?) kode at konvertere din postscript-file til pdf, før postscript-filen er færdigdannet.

Derudover skal du sørge for at ændre standardindstillingen for Adobe PDF Printing Preferences - Do not send fonts to "Adobe PDF" må ikke være krydset af.
Avatar billede friis5 Novice
25. oktober 2007 - 15:18 #2
Tak for svaret.

1) Første kode når aldrig ned til 'Options.PrintBackground = False, så det ændrer ikke meget, om den er rem'et eller ej. Den stopper ved generering af objektet objDistiller.

"run-time error '429':
ActiveX component can't read object.

2) Tak for hjælpen på den sidste, nu oprettes .ps filen korrekt med Adobe, så intet behov for pdf995 :) [er der en kode, så den automatisk ændrer dette?]
Avatar billede friis5 Novice
25. oktober 2007 - 15:27 #3
Fandt fejlen havde ikke inkluderet acrobat i tools->references. Ændrede koden til:

    Dim myPDF As ACRODISTXLib.PdfDistiller
    Set myPDF = New PdfDistiller
    myPDF.FileToPDF strPSFileName, strADB_FileName, ""

Og nu spiller det hele :]
Avatar billede friis5 Novice
25. oktober 2007 - 15:28 #4
Glemte lige linket der hjalp mig på vej endeligt!

http://www.xtremevbtalk.com/archive/index.php/t-195353.html
Avatar billede friis5 Novice
25. oktober 2007 - 15:38 #5
2) Tak for hjælpen på den sidste, nu oprettes .ps filen korrekt med Adobe, så intet behov for pdf995 :) [er der en kode, så den automatisk ændrer dette?]

^^ Vil jeg dog meget gerne have en løsning til stadig, for den ændrer sig konstant tilbage til sidste indstilling, samt arket ikke kan køre på andres computere!
Avatar billede word-hajen Nybegynder
25. oktober 2007 - 20:17 #6
Det er normalt ikke nødvendigt at sætte referencen til acrobat, når man bruger objektet som oprindelig i koden (bruger faktisk nøjagtig det samme i egen løsning). Men hvis den anden version fungerer for dig, så er det jo fint.

Mht. Adobe-indstillinger - aner det simpelthen ikke. Det er Adobe, og det har jeg intet styr på rent kodemæssigt ud over at jeg kan danne PDF-filerne rigtigt. Men umiddelbart bør din indstilling i Adobe ikke ændre sig - meeen hvordan er det installeret og hvordan bliver det styret? Jeg tænker på, om der sidder en administrator hos jer, der har kontrol over det hele, og I således ikke får lov til at ændre i registreringsdatabasen, hvor jeg umiddelbart går ud fra, at det bliver registreret.

I så fald - fat i administrator og få vedkommende til at rulle ændringen ud.
Avatar billede friis5 Novice
29. oktober 2007 - 10:30 #7
Efter at have skrevet til Adobe frem og tilbage, er jeg kommet frem til, at min løsning med automatisk PDF generering ikke kan lade sig gøre, da hyperlinks i cellerne ikke kan gemmes automatisk (i flg. dem).

Så man skal manuelt lave dem om til pdf :(

Men ellers tak for hjælpen :)
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