doc opslaan als pdf via vba

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • niels100
  • Registratie: September 2009
  • Laatst online: 18-12-2023
hallo,

de titel zegt het al denk ik.

ik probeer via visual basic een .doc bestand op te slaan als een .pdf.
dit is mij al gelukt, alleen krijg ik het niet voor elkaar om in een inputbox de bestandsnaam op te gegeven.
zodat het bestand wordt opgeslagen met de opgegeven bestandsnaam.

alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Rupie
  • Registratie: Augustus 2006
  • Laatst online: 08-09 15:19
hoe regel je het opslaan zelf? wellicht dat je even de code kunt pasten?

Het eerst wat mij te binnen schiet is namelijk een pdf printerdriver en het opslaan dan regelen via het commando 'print'. krijg je dat niet vanzelf de vraag wat de bestandsnaam moet worden? Ik heb het ooit zelf gebruikt om diverse files uit een database te kunnen printen, zie Diverse files printen met access macro?

[ Voor 5% gewijzigd door Rupie op 04-05-2010 19:52 ]

Desktop | Server | Laptop


Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 10-09 09:22
Zelf heb ik dit opgelost door eerst het document op te slaan en daarna te "printen" naar de PDFCreator printer.
Deze staat zo ingesteld om een PDF te creëren met dezelfde filename als de originele en op dezelfde locatie.

Ben erg benieuwd hoe je het anders zou oplossen, kan je je code hier posten tussen [Code=vbs] tags?

[ Voor 13% gewijzigd door mhoogendam op 04-05-2010 21:15 ]


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Binnen Access gebruik ik de code en DLL's van deze site; http://www.lebans.com/reporttopdf.htm

Het voordeel is dat er geen pdf-printer geïnstalleerd hoeft te zijn, en je hebt alle controle over locatie en bestandsnaam van de PDF's.

Nadeel zijn de DLL's. Bij Access volstaat het als die in dezelfde folder staan als de database, maar ik weet niet of dat voor Word ook op gaat. Sowieso zal het wat aanpassingen vergen om dit binnen Word werkend te krijgen, maar wellicht leidt het je in de goede richting.

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 18:27
Kan je niet de SaveAs method gebruiken en dan
code:
1
wdFormatPDF
meegeven?

Dus zoiets:

code:
1
ActiveDocument.SaveAs "C:\bestandsnaam.pdf", wdFormatPDF


Heb het even getest en het werkt bij mij.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
@urk_forever dat werkt volgens mij alleen vanaf 2007-versie?

edit - oh d'uh, dit gaat ook over Word 2007. Nvm ;)

[ Voor 31% gewijzigd door Marko_J op 05-05-2010 12:07 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Wat is er mis met de Add-In van MS die hetzelfde doet en gewoon gratis is? :) Ook zijn er andere alternatieven, zoals bijvoorbeeld doPDF, een gratis PDF-printer.
Ik had het wel geweten en het wiel niet opnieuw uitgevonden... :)
Marko_J schreef op woensdag 05 mei 2010 @ 12:04:
@urk_forever dat werkt volgens mij alleen vanaf 2007-versie?
Er word door de TS geen versie gegeven, dus hoe kun je er dan vanuit gaan dat het Office 2007 is? :)
De Save as PDF van MS is er volgens mij ook voor Office 2003 namelijk.

[ Voor 46% gewijzigd door CH4OS op 05-05-2010 12:09 ]


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ehm, het gaat niet zozeer om het opslaan zelf, maar om het tonen van een FileDialog. Zie daar. :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 18:27
Marko_J schreef op woensdag 05 mei 2010 @ 12:04:
@urk_forever dat werkt volgens mij alleen vanaf 2007-versie?
Ik denk van wel ja, maar in de tags van het topic staat Word 2007 dus ik ga er vanuit dat hij die versie gebruikt.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • niels100
  • Registratie: September 2009
  • Laatst online: 18-12-2023
@ urk_forever,
ja zover was ik ook al, maar toch bedankt voor je reply.

@pedorus,
dank u, ik heb nu:

Dim dlgSaveAs As FileDialog
Set dlgSaveAs = Application.FileDialog( _
FileDialogType:=msoFileDialogSaveAs)
dlgSaveAs.Show

nu krijg ik het opslaan als venster.
zou ik ook nog in de macro kunnen instellen dat hij direct het huidige bestandsnaam invult? en dat hij hem direct zet op .pdf?

als vast bedankt!

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 18:27
niels100 schreef op woensdag 05 mei 2010 @ 14:17:
@ urk_forever,
ja zover was ik ook al, maar toch bedankt voor je reply.

@pedorus,
dank u, ik heb nu:

Visual Basic:
1
2
3
4
    Dim dlgSaveAs As FileDialog
    Set dlgSaveAs = Application.FileDialog( _
        FileDialogType:=msoFileDialogSaveAs)
    dlgSaveAs.Show


nu krijg ik het opslaan als venster.
zou ik ook nog in de macro kunnen instellen dat hij direct het huidige bestandsnaam invult? en dat hij hem direct zet op .pdf?

als vast bedankt!
Als je dit nu meteen in je eerste post had gezet had dat al veel gescheeld. Met de code completion in de VBA Editor had je dit zelf ook wel uit kunnen vogelen:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    Dim dlgSaveAs As FileDialog
    Dim i As Integer
    Set dlgSaveAs = Application.FileDialog( _
    FileDialogType:=msoFileDialogSaveAs)

    'Stel de bestandsnaam in
    dlgSaveAs.InitialFileName = "Dit de bestandsnaam"
    
    'Selecteer het juiste filter
    For i = 1 To dlgSaveAs.Filters.Count
      If (InStr(1, dlgSaveAs.Filters.Item(i).Extensions, ".pdf", vbTextCompare) > 0) Then
        dlgSaveAs.FilterIndex = i
        Exit For
      End If
    Next
    
    dlgSaveAs.Show

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Als je niet wil dat gebruikers kunnen bepalen wáár de pdf's opgeslagen worden, dan kan je ipv FileDialog ook nog de ordinaire Inputbox gebruiken;


Visual Basic:
1
2
3
4
5
6
7
8
9
10
Dim strPad as string, strBestandsnaam as string

'stel locatie vast voor bestand
strPad = "C:\jouwvastelocatievoorpdfs\"

'vraag gebruiker om bestandsnaam
strBestandnaam = InputBox("Voer een bestandsnaam in voor de PDF", "PDF opslaan", "defaultnaam")

'opslaan als pdf
ActiveDocument.SaveAs strPad & strBestandsnaam & ".pdf", wdFormatPDF


Hierdoor hebben gebruikers alleen invloed op hoe het bestand heet, niet waar het komt te staan. Uiteraard zouden er nog de nodige checks en controles bij moeten, maar dit is het in de basis.

Acties:
  • 0 Henk 'm!

  • niels100
  • Registratie: September 2009
  • Laatst online: 18-12-2023
marko_j bedankt het werkt!:D
Pagina: 1