Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
796to800
796to800
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Acrobat Reader PDF von Excel ausdrucken

Acrobat Reader PDF von Excel ausdrucken
29.08.2006 16:21:44
Excel
Hallo,
ich möchte gerne von Excel aus eine bestimmte pdf-Datei ausdrucken. das klappt auch ganz gut. Aber nach dem Drucken bleibt vom Acrobat Reader immer noch eine leere Instanz geöffnet. Ich möchte aber dass der Acrobat Reader nach dem Drucken ganz geschlossen wird.
Vielen Dank für Eure Hilfe!!
Ich habe diesen Code verwendet:
Option Explicit
Private Declare Function FindClassWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As Long) _
As Long
Private Const WM_SYSCOMMAND = &H112
Private Const SC_CLOSE = &HF060
Private Declare Function PostMessage Lib "user32" _
Alias "PostMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) _
As Long
Private Declare Function ShellExecuteAPI Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpoperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nshowcmd As Long) _
As Long
Private Const SW_HIDE = 0
Public Function PrintDocument(ByVal documentAndpath$) As Long
'Druckt jedes Dokument für das eine Druckverknüpfung in
'der Registry hinterlegt ist
PrintDocument = ShellExecuteAPI(0, "print", documentAndpath, "", "", SW_HIDE)
End Function
Public Function CloseClassWindow(ByVal class$) As Boolean
'Acrobat=AdobeAcrobat
'Klassenname des Hauptfensters übergeben
'Liefert true zurück, falls ein Fenster gefunden wurde
'schließt das erste gefundene Fenster
Dim hwnd&
hwnd = FindClassWindow(class$, 0&)
If hwnd Then
CloseClassWindow = True
Call PostMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, ByVal 0&)
End If
End Function

Private Sub cmdPrint_PDF_Click()
Dim str As String
str = Application.ThisWorkbook.Path
str = str & "/test.pdf"
PrintDocument str
CloseClassWindow "AdobeAcrobat"
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Acrobat Reader PDF von Excel ausdrucken
29.08.2006 20:49:10
Excel
Hallo Henning,
versuch es mal an Stelle der Systemmenü - Konstante
Private Const SC_CLOSE = &HF060
mit der Windowmessage
Private Const WM_CLOSE = &H10
Ansonsten schießen wir den Prozess einfach mit TerminateProcess ab.
Gruß
Nepumuk
AW: Acrobat Reader PDF von Excel ausdrucken
30.08.2006 08:26:25
Excel
Dank an Nepumuk für die Antwort,
leider funktioniert dies noch nicht bei mir.
&gt Ansonsten schießen wir den Prozess einfach mit TerminateProcess ab.
An welcher Stelle baue ich das ein? Bitte um kleinen Tipp.
Danke.
Henning
AW: Acrobat Reader PDF von Excel ausdrucken
30.08.2006 10:04:12
Excel
Hallo Henning,
mit WMI oder mit API?
Gruß
Nepumuk
AW: Acrobat Reader PDF von Excel ausdrucken
30.08.2006 10:21:32
Excel
Hallo Nepumuk,
von mir aus mit API
Gruss
Henning
Anzeige
AW: Acrobat Reader PDF von Excel ausdrucken
30.08.2006 10:43:48
Excel
Hallo Henning,
dann so:
' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" ( _
    ByVal dwFlags As Long, _
    ByVal th32ProcessID As Long) As Long
Private Declare Function Process32First Lib "kernel32" ( _
    ByVal hlngSnapshot As Long, _
    ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" ( _
    ByVal hlngSnapshot As Long, _
    ByRef lppe As PROCESSENTRY32) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
    ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" ( _
    ByVal hProcess As Long, _
    ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" ( _
    ByVal dwDesiredAccess As Long, _
    ByVal bInheritHandle As Long, _
    ByVal dwProcessId As Long) As Long

Private Const TH32CS_lngSnapPROCESS = &H2
Private Const MAX_PATH = 260
Private Const PROCESS_VM_READ = &H10
Private Const PROCESS_TERMINATE = &H1

Private Type PROCESSENTRY32
    dwSize As Long
    cntUsage As Long
    th32ProcessID As Long
    th32DefaultHeapID As Long
    th32ModuleID As Long
    cntThreads As Long
    th32ParentProcessID As Long
    pcPriClassBase As Long
    dwFlags As Long
    szExeFile As String * MAX_PATH
End Type

Public Sub Kill_AcroRd32()
    Dim lngSnap As Long, lngResult As Long
    Dim udtProcess As PROCESSENTRY32
    lngSnap = CreateToolhelp32Snapshot(TH32CS_lngSnapPROCESS, 0&)
    If lngSnap <> -1 Then
        udtProcess.dwSize = Len(udtProcess)
        lngResult = Process32First(lngSnap, udtProcess)
        Do Until lngResult = 0
            If InStr(1, udtProcess.szExeFile, "AcroRd32.exe") Then
                lngResult = OpenProcess(PROCESS_VM_READ Or _
                    PROCESS_TERMINATE, 0&, udtProcess.th32ProcessID)
                TerminateProcess lngResult, 0&
                Exit Do
            End If
            lngResult = Process32Next(lngSnap, udtProcess)
        Loop
    End If
    CloseHandle lngSnap
End Sub

Gruß
Nepumuk
Anzeige
AW: Acrobat Reader PDF von Excel ausdrucken
30.08.2006 11:39:32
Excel
Danke das funktioniert jetzt.
Allerdings müsste es jetzt noch eine Routine geben, die erkennt, wann der Acrobat Reader fertig mit dem Schreiben ist.
Ansonsten wird der Terminate Prozess vorzeitig eingeleitet.
Gruss
Henning
AW: Acrobat Reader PDF von Excel ausdrucken
30.08.2006 12:51:58
Excel
Hallo Henning,
da habe ich schon eine Lösung, aber die ist ziemlich kompliziert und funktioniert nicht auf allen Rechnern zu 100% sicher. Ich würde mir an deiner Stelle mit der Wait - Methode behelfen.
Gruß
Nepumuk

14 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige