Avatar billede micaud Mester
15. april 2007 - 21:18 Der er 10 kommentarer og
1 løsning

Print til PDF

Jeg har behov for at kunne printe til PDF fra Excel via VBA uden jeg bliver spurgt om filnavn, da VBA generer 20 PDF-filern for mig, så det er irriterende, at skulle navngive dem alle hver gang.

Jeg bruger adobe acrobat 7,0 og jeg har acrobat distiller 7,0 men forstår ikke programmet - skal jeg bruge det og hvordan ??

Jeg har forsøgt med følgende:

Sub printPDF()
    Dim PDFFileName As String
    PDFFileName = "c:\mypdf.pdf"
    ActiveWindow.SelectedSheets.PrintOut copies:=1, preview:=False, ActivePrinter:="Adobe PDF på Ne01:", printtofile:=False, collate:=True, prtofilename:=PDFFileName
End Sub

Den kører uden fejl og laver også en PDF-fil, men filen kan ikke åbnes og læses med PDF reader.
Avatar billede micaud Mester
15. april 2007 - 21:31 #1
Jeg har også prøvet med printtofile:=True
Avatar billede h_s Forsker
15. april 2007 - 21:55 #2
Den her laver kun en PDF-fil og dermed spørger den kun en gang, hvis du vælger PDF-printer!

Kabbak har lavet den til mig!

Private Sub cmdOK_Click()
Dim navn As String, i As Long
'Lukker Formular
Unload Me

'Åbner Udkrivdialogbox så printer kan vælges
    A = Application.Dialogs(xlDialogPrinterSetup).Show
If A = True Then
   
' Dim Ark As String, A

    Application.ScreenUpdating = False
   
    'Valg af ark der skal udskrives
    If cbOpgørelsesark = True Then Ark = "Opgørelsesark" & Chr(44)
    If cbDiagram = True Then Ark = Ark & "Diagram" & Chr(44)
 

    Ark = Left(Ark, Len(Ark) - 1)
    A = Split(Ark, ",")

    Select Case UBound(A)
    Case 0: Sheets(Array(A(0))).Select
    Case 1: Sheets(Array(A(0), A(1))).Select
   
    End Select
   
    'Udskriver de valgte ark
    ActiveWindow.SelectedSheets.PrintOut

End If
 
  'Stiller sig i celle C3 i ark Info
  Sheets("info").Select
  Range("C3").Select

End Sub
Avatar billede micaud Mester
15. april 2007 - 22:23 #3
Nu har jeg ikke afprøvet den, men jeg tror ikke det kan bruges.

Jeg har en pivot tabel, hvor jeg skal have udskrevet 2 grafer pr. afdeling.

1) Afd. 10 vælges
2) Dato rykkes ned i pivotfelt
3) Graf 1 udskrives som PDF (skal hedde Tid10.pdf)
4) Dato rykkes tilbage
5) Graf 2 udskrives som PDF (skal hedde Tid10a.pdf)
6) Afd. 20 vælges
7) Dato rykkes ned i pivotfelt
8) Graf 1 udskrives som PDF (skal hedde Tid20.pdf)
9) Dato rykkes tilbage
10) Graf 2 udskrives som PDF (skal hedde Tid20a.pdf)
o.s.v. for 7 afdelinger i alt

Graf 1 og 2 ændres altså hele tiden, hvorfor jeg ikke tror dit forslag virker.

Det hele virker som sådan, jeg bliver bare afbrudt hver gang jeg skal navngive pdf-filen.

Til sidst forbinder jeg alle pdf-filer i en via acrobat combinder. Hvis jeg kan samle dem alle i én pdf-fil fra starten, så vil det være perfekt.
Avatar billede word-hajen Nybegynder
16. april 2007 - 11:27 #4
Du skal lave en postscript-fil, som du derefter konverterer til en pdf.

Public Sub ConvertToPDF()
    Dim objDistiller As Object
    Dim strADB_FileName As String
    Dim strPSFileName As String
    Dim strFilename As String

    Set objDistiller = CreateObject("Pdfdistiller.PdfDistiller")

    Application.ActivePrinter = "Adobe PDF på Ne01:"
    strFilename = "c:\mypdf"
    strPSFileName = strFilename & ".ps"
    strADB_FileName = strFilename & ".pdf"
   
    'create postscript file
    Options.PrintBackground = False
    ActiveWindow.SelectedSheets.PrintOut copies:=1, printtofile:=True, outputfilename:=strPSFileName

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

    'delete postscript file
    Kill strPSFileName

    objDistiller.Quit
    Set objDistiller = Nothing
End Sub
Avatar billede micaud Mester
16. april 2007 - 12:34 #5
outputfilename måtte jeg ændre til prtofilename og jeg den melder fejl på 2 sidste linie objDistiller.quit.

Det fungerer, hvis jeg sletter den linie, men er det okay at gøre ???
Avatar billede micaud Mester
16. april 2007 - 12:35 #6
Kan man lægge dem alle I en PDF-fil med det samme eller skal jeg gøre det efterfølgende ???
Avatar billede jokerper Nybegynder
16. april 2007 - 16:24 #7
Prøv denne her!

Sub PDFPrint()
Const stPDFPrinter As String = "EdocPrinter PDF Pro:"
Const stPath As String = "C:\PDFfiler\"
Dim stFilnavn As String
Dim stOldPrinter As String
On Error GoTo errormsg
    ' filnavn fra celle B1
    stFilnavn = ActiveSheet.Range("B1").Value
    'hvad hedder nuværende printer
    stOldPrinter = Application.ActivePrinter
    'udskriv til pdfprinter
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=stPDFPrinter, _
            Collate:=True, prtofilename:=stPath & stFilnavn
    'skift tilbage til rigtig printer
    Application.ActivePrinter = stOldPrinter
    Exit Sub
errormsg:
    MsgBox "Der er sket en fejl, Arket er ikke printet ud i pdf-format"
End Sub


Den virker hos mig.
Avatar billede word-hajen Nybegynder
16. april 2007 - 16:27 #8
Da pdf-distilleren er "sparket i luften", bør den lukkes igen med quit, men hvis du får en fejl, ville jeg slette den. Da du ikke generer dine prints på én gang, kan jeg ikke se nogen løsning på, at du skal samle filerne bagefter manuelt. Desværre. Måske er der nogle pdf-hajer, der kan det.
Avatar billede micaud Mester
16. april 2007 - 18:58 #9
PDF-distiller ligger ikke som et program, der er åbnet og jeg kan heller ikke umiddelbart se den under processer.

Anyway, det er blivet genialt, så word-haj send et svar, og mange tak for hjælpen.
Avatar billede word-hajen Nybegynder
17. april 2007 - 00:12 #10
Velbekomme - og svar :-)
Avatar billede word-hajen Nybegynder
17. april 2007 - 00:35 #11
Det hjælper vist, hvis jeg husker at klikke af det rigtige sted *s*
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