# automatisches Drucken von html



## Bamboocha_10 (24. Januar 2008)

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


```
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 (24. Januar 2008)

VB6, warum druckst du nicht mit

```
Private Sub DocumentPrint(ByVal sFilename As String)
Printer.Print sFilename
 Printer.EndDoc
End Sub
```


Der Doc!


----------



## Bamboocha_10 (24. Januar 2008)

Mh, gute Frage 
Aber wie muss ich dann printer deklarieren?


----------



## DrSoong (25. Januar 2008)

Printer ist ein Objekt, dass VB bereitstellt, schau dir dazu mal das Printer-Tutorial an. Wenn du die Drucker auslesen bzw. setzen willst, such dir das passende Beispiel hier raus.


Der Doc!


----------



## Bamboocha_10 (25. Januar 2008)

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 (25. Januar 2008)

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 ), werd ich wahrscheinlich erst morgen was haben.


Der Doc!


----------



## Bamboocha_10 (25. Januar 2008)

Upps, sorry. Ja, also mit VBA.
Und ich will eine html Datei drucken, die auf meinem Rechner liegt


----------



## DrSoong (26. Januar 2008)

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 (26. Januar 2008)

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...)_

```
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


----------



## Tody83 (27. Januar 2008)

Hi...

Nun das gleiche Tool nur ohne Word aufruf...
Berichtet bitte wies läuft...

Anhang anzeigen PrintHTML.zip


lg Tody


----------

