Een pdf bestand printen via vba

Status
Niet open voor verdere reacties.

corvdh

Gebruiker
Lid geworden
29 aug 2010
Berichten
128
Ik gebruik de volgende code om een pdf bestand te openen via een macro in Excel, zodat ik daarna het bestand kan printen via de print optie van in dit geval de Adobe reader.
Code:
Sub Open_PDF_bestand01()
'

1   Dim lngAntwoord As Long
2   lngAntwoord = MsgBox("Wil je dit bestand openen?", vbQuestion + vbYesNo + vbDefaultButton1, "Testbestand01 openen")
3   If lngAntwoord = vbYes Then
4   GoTo 8
5   Else
6   GoTo 9
7   End If
8   ThisWorkbook.FollowHyperlink Address:="Testmap01/Testbestand01.PDF", NewWindow:=True
    ActiveWindow.WindowState = xlMaximized
9   Range("A1").Select

End Sub
Ik moet de file regelmatig printen dus lijkt het me handig dit gelijk via een macro te kunnen doen.

Dus ik wil via een macro in Excel en een drukknop op het werkblad een melding genereren.
Bij Yes: PDF bestand printen
Bij No: alleen het bestand openen
Bij Cancel: niets doen.

Is dit mogelijk?
 
Code:
Sub PDF_Print1()
    Dim iReply As Integer
    
    iReply = MsgBox("Wil je het bestand printen ?", vbYesNoCancel)
    If iReply = vbYes Then
        Shell "C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe /t C:\Testmap01\Testbestand01.PDF", 1
    ElseIf iReply = vbNo Then
        ThisWorkbook.FollowHyperlink Address:="Testmap01/Testbestand01.PDF", NewWindow:=True
        ActiveWindow.WindowState = xlMaximized
    Else
        Exit Sub
    End If
End Sub

Je moet nog wel het pad aanpassen naar je reader-executable en eventueel het pad naar je pdf-bestand.
 
Nu staat het pdf bestand in een map in de Mijn documentenmap.
Nu gebruik ik het excel bestand waar ik de pdf mee wil printen op verschillende computers (thuis en werk).
Nu is het pad afhankeleijk van de gebruiker, nu zal dus de macro niet op elke computer werken, of wel?

Bij de macro die ik gebruik om het pdf bestand te openen begin ik het pad bij de map waar het bestand in zit, en werkt dus altijd op elke computer.
Kan dat bij deze macro ook?
 
Als het Pdf-bestand en het XL-bestand in dezelfde map staan kan je gebruik maken van
Code:
ThisWorkbook.Path & "\" & "Testbestand01.pdf"
 
Laatst bewerkt:
Ik heb
Code:
ThisWorkbook.Path & "\" & "Testbestand01.pdf"
geprobeerd maar krijg dan een foutmelding in vba.

Ik heb nu de macro aangepast naar:
Code:
Sub Print_bestand()

    Dim iReply As Integer
    
    iReply = MsgBox("Wat wil je doen?" + vbCr + vbCr + "Ja = bestand alleen printen." + vbCr + "Nee = bestand openen." + vbCr + "Annuleren (cancel) = niets doen.", vbQuestion + vbYesNoCancel + vbDefaultButton1, "Printen of openen?")
    If iReply = vbYes Then
        Shell "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe /t Testbestand01.PDF", 1
    ElseIf iReply = vbNo Then
        ThisWorkbook.FollowHyperlink Address:="Testmap01/Testbestand01.PDF", NewWindow:=True
        ActiveWindow.WindowState = xlMaximized
    Else
        Exit Sub
    End If
End Sub

Openen en annuleren gaat goed, bij printen (door op Ja te klikken) opent de adobe reader en krijg ik een fout van de adobe reader dat het bestand niet gevonden kan worden, vba geeft geen fout.

Hoe nu verder?
 
Heb je wel versie 10.0 versie van adobe reader Cor.
Of heb je toevallig 9.0 versie.
Even met de muis over de snelkoppeling van Adobe heen, en je ziet de lokatie met de versie.

Ik heb het even zo getest, met 9.0 versie bij mezelf, en de iets gewijzigde code.
Het bestand staat bij mij in "D:\ (even wijzigen naar jouw wensen).
Denk ook aan de spatie voor de " D:\" en na de dubbele quote.
Code:
bestand = " D:\Testbestand01.PDF"


Onderstaande code werkt bij perfect.
Code:
Sub Print_bestand()

    Dim iReply As Integer, Acropad As String, bestand As String
    
    iReply = MsgBox("Wat wil je doen?" + vbCr + vbCr + "Ja = bestand alleen printen." + vbCr + "Nee = bestand openen." + vbCr + "Annuleren (cancel) = niets doen.", vbQuestion + vbYesNoCancel + vbDefaultButton1, "Printen of openen?")
    If iReply = vbYes Then
        Acropad = "C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe"
         bestand = " D:\Testbestand01.PDF"
       Shell Acropad & bestand, vbMaximizedFocus
    ElseIf iReply = vbNo Then
        ThisWorkbook.FollowHyperlink Address:="Testmap01/Testbestand01.PDF", NewWindow:=True
        ActiveWindow.WindowState = xlMaximized
    Else
        Exit Sub
    End If
End Sub
 
Het opgeslagen XL-bestand en het pdf-bestand in dezelfde map.
Code:
Sub Print_bestand()

    Dim iReply As Integer
    iReply = MsgBox("Wat wil je doen?" + vbCr + vbCr + "Ja = bestand alleen printen." + vbCr + "Nee = bestand openen." + vbCr + "Annuleren (cancel) = niets doen.", vbQuestion + vbYesNoCancel + vbDefaultButton1, "Printen of openen?")
    If iReply = vbYes Then
        Shell "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe /t " & ThisWorkbook.Path & "\" & "Testbestand01.PDF", 1
    ElseIf iReply = vbNo Then
        ThisWorkbook.FollowHyperlink Address:=ThisWorkbook.Path & "\" & "Testbestand01.PDF", NewWindow:=True
        ActiveWindow.WindowState = xlMaximized
    Else
        Exit Sub
    End If
End Sub
 
Als het bestand in 'MyDocuments' staat:

Code:
sub snb()
 Shell "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe /t " & replace(createobject("wscript.shell").specialfolders("Mydocuments")&"\","\\","\")& "Testbestand01.PDF", 1
end sub
 
Ik heb even het een en ander aan oplossingen die hier zijn gegeven geprobeerd en dat stukje code van snb werkt bij mij het beste.
Ik ga de bestaande macro binnenkort even aanpassen door dit stukje code toe te voegen en volgens mij heb ik dan wat ik wil.

Allemaal weer bedankt voor het mee denken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan