automatisches Drucken von html


Bamboocha_10

Mitglied
Hallo mal weider :)
ich habe allerlei Auswertungen in eine HTML Datei geschrieben, die ich nun gern vollautomatisch auf dem eingestellten Standarddrucker drucken würde.

Mit der folgenden ShellExecute geht zwar das Drucken Fenster auf, ich möchte aber, dass es komplett automatisch läuft

Code:
Private Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hWnd As Long, _
    ByVal lOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long


Private Sub DocumentPrint(ByVal sFilename As String)
  Call ShellExecute(hWnd, vbNullString, _
   "rundll32.exe", "mshtml.dll,PrintHTML " & _
   Chr$(34) & sFilename & Chr$(34), "", vbHide)
End Sub

Danke schon mal im Voraus
 

DrSoong

Iss was, Doc!
VB6, warum druckst du nicht mit
Visual Basic:
Private Sub DocumentPrint(ByVal sFilename As String)
Printer.Print sFilename
 Printer.EndDoc
End Sub


Der Doc!
 

Bamboocha_10

Mitglied
Irgendwie werd ich nicht schlau daraus.
Bei mir ist die Variabe Print unbekannt. Ich hab mir zwar die Beispiele angesehen, aber es scheint so, als würde dort überall die Variable bekannt sein bzw. eben vom System bereit gestellt werden. Muss ich eventuell eine Biblothek hinzuladen, weil ich VBA benutze?

Ich weiss auch wieder, warum ich ShellExecute genutz habe. Die Funktion musste ich bereits für das Öffnen von Datein definieren. :)

Aber letzten Endes ist es nicht so wichtig auf welchem Weg ich drucke, hautpsache es druckt. Ich muss auch nichts einstellen oder so. Einfach die Datei so wie sie ist drucken.
 

DrSoong

Iss was, Doc!
Ah, VBA, klar, VBA kennt das Printer-Objekt in der Form nicht (bitte in Zukunft dazuschreiben, welche VB-Version du genau verwendest, Unterschiede sind ja vorhanden).

Wenn du jetzt nur das aktuell angezeigte Dokument drucken willst, wärs ja einfach, eine Datei muss ich aber erst selbst nachschlagen. Da ich hier kein MS-Office habe (OO rules :D), werd ich wahrscheinlich erst morgen was haben.


Der Doc!
 

DrSoong

Iss was, Doc!
So, nach ein bißchen graben hab ich 2 Lösungen:

1) Du spielst dich ein bißchen und versuchst, das Druckerfenster mittles SendKeys bzw. Keybd_event-API so wegzuklicken, dass der Druck angestoßen wird. Mein Problem war bislang aber immer, dass ich das Fenster zwar in den Vordergrund, jedoch nicht in den Fokus (die Titelleiste war also grau) bekommen habe. Dabei ist dann leider auch die Tastenkombo vorbeigelaufen.

2) Du lädst die HTML-Datei einfach nach Word und druckst sie aus. (empfohlene Methode)

Eine andere Lösung hab ich nicht gefunden, da VBA ja kein Printer-Objekt besitzt.


Der Doc!
 

Tody83

Mitglied
Hi...

Der Vorschlag vom Doc, das über Word zu erledigen ist die beste Lösung...

Hab mal ein kleines Tool gemacht das du entweder über die DosShell (PrintHTML Datei.html) oder mit VBA startest...
Hier der VBA Code: (ist der von dir, etwas abgeändert...)
Visual Basic:
Private Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hWnd As Long, _
    ByVal lOperation As String, _
    ByVal lpFile As String, _
    ByVal lpParameters As String, _
    ByVal lpDirectory As String, _
    ByVal nShowCmd As Long) As Long

Private Sub DocumentPrint(ByVal sFilename As String, _
    Optional ByVal PrintHTML_Executable As String = "C:\PrintHTML.exe")
    Call ShellExecute(hWnd, vbNullString, PrintHTML_Executable, sFilename, "", vbHide)
End Sub

Anhang anzeigen PrintHTML.exe.zip
Das Tool öffnet die angegebene Datei in Word, druckt diese und schließt alles wieder...
Ohne das der Benutzer agieren muss...

Gib bitte bescheit obs funktioniert.
Fallst einen Installer brauchst melde dich auch bitte...

lg Tody
 

Neue Beiträge