Automatischer Etikettendruck nach Hyperlink?

Hallo!

Ich habe da ein ziemlich dringendes Problem und hoffe, irgendjemand von euch kann mir da helfen:

Ich habe eine Adressbuchanwendung auf HTML(JSP)-Basis gebaut, und möchte nun ein Worddokument mit vorbereitetem Serien-Etikettendruck (Nur die Daten sind noch nicht eingespielt) mit einem href einbinden.

Das geht soweit so gut, folgenden href habe ich verwendet:

Etiketten ausdrucken

So nun zeigt Internet Explorer das Word-Dokument an.

Nur ich kann das Dokument nicht mit der Datenquelle verknüpfen (Access DB), weil die entsprechenden Buttons zwar angezeigt, aber nicht aktiviert sind.

Habe schon ein AutoExec-Makro versucht… Funktioniert nicht

Weis irgendjemand von euch, wie ich das lösen könnte. Am optimalsten wäre eine Lösung, bei der ich nur auf den Href klicken muß, um die Etiketten mit Word ausdrucken zu können…

J.P.Jarolim

Hallo Johannes

Nun so geht das wohl nicht. Das sagt mir sowohl das Gespür wie auch gewisse Hinweise auf der knowledge base von Microsoft. Ein Hyperlink ist ein Hyperlink und kein Werkzeug, welches ganze Funktionen auslösen sollte. Dies auch im Sinne der Sicherheit im Netzt.

Natürlich hat mich die Aufgabenstellung dennoch gereitzt!
Ich war überrascht und auch etwas entzückt zu erleben, wie einfach und konsistent die Sache zu lösen ist, wenn man „Office Automation“ zu Hilfe mimmt. Dabei handelt es sich um eine offizielle Methode von Microsodt um Office-Anwendungen von aussen zu steuern.

Mit Office Automation gelingt auch die angestrebte Vollautomation, hat man doch damit vollen Zugriff auf das Objekt-Modell von Office-Anwendungen.

Ich bin wie folgt vorgegeangen:

  1. Ich habe ein Serienbriefhauptdokument, mit allem Drum und Dran erstellt, also auch mit der Verbindung zur (Access-) Datenquelle.

  2. Ich kopiere in dieses Serienbriefhauptdokument folgenden Code, welcher bewirkt, dass nach dem Öffnen des Dokumentes, das Verbinden, also der Ausdruck der Etiketten automatisch passiert. Der Name des Prozesses, nämlich AutoOpen ist dabei zwingend.

START VBA-CODE -------------------------------------------------------------
Sub AutoOpen()
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
ActiveDocument.PrintOut Background:=False
ActiveDocument.Close SaveChanges:=False
End Sub
ENDE VBA-CODE --------------------------------------------------

  1. In einer HTML-Datei habe ich folgendes VB-Skript erstellt. Selbstverständlich muss der Dateiname bei OpenDoc noch angepasst werden. Dort muss der wirkliche Name des Seriendruckhauptdokument rein.

START VB-SKRIPT --------------------------------------------------

Dim objWord
Sub Btn1_onclick()
call OpenDoc(„C:\Eigene Dateien/AASerEtt.doc“)
End Sub
Sub OpenDoc(strLocation)
Set objWord = CreateObject(„Word.Application“)
objWord.Documents.Open strLocation
objWord.Visible = False
objWord.Quit False
End Sub
Ettiketten Drucken ENDE VB-SKRIPT --------------------------------------------------

Rufe ich nun dieses Skript im Internet Explorer auf, erscheint dort ein Knopf mit der Bereichnung „Etiketten drucken“. Betätigt der Benutzer den Kopf, wird im Hintergrund (unsichtbar für den Benutzer) das Seriendruckhauptdokument aufgerufen (und damit auch Word - das Seriendruckhauptdokument öffnet dann indirekt auch die Access-MDB), die Etiketten werden dann auf den Standarddrucker gedruckt. Anschliessend wird der ganze Zauber, Also Word und indirekt auch Access wieder beendet.

Ich drucke bewusst indirekt über eine temporäre Word-Datei. Würde ich direkt drucken, würde der Drucker-Dialog erscheinen und auf eine Bestätigung warten. Dies wäre aber nicht im Sinne einer Vollautomatisation.

Muss ein ganz bestimmter Drucker ins Spiel kommen, liesse sich dies auf einfache Wiese im Prozess _AutoOpen ergänzen.

Viel Spass!
S. Widmer_

Geniale Lösung!
Hi!

Vielen Dank für deinen Beitrag… ist wirklich eine geniale Lösung.
Da sieht man mal wieder, daß man sich einfach nicht überall auskennen kann :wink:

Eine Frage hätte ich aber bitte noch:

Da ich mich mit VBScript in HTML bzw. WORD überhaupt nicht auskenne:

Du hast angedeutet, daß du weist, wie man auf einen anderen Drucker als den Standartdrucker drucken kann… In dem Büro, wo meine Anwendung läuft, kann ich nicht auf den Standartdrucker drucken, sondern muß auf einen lokalen Inkjet drucken…

Merci vielmals,

mfG,

J.P.Jarolim

hello again

Das lässt sich einfach und klassisch lösen:

Gruss
Silvia Widmer

'START VBA-CODE -------------------------------------------------------------
Sub AutoOpen()
Drucker = „Acrobat PDFWriter“ 'Hier effektiven Drucker eintragen
savDrucker = ActivePrinter
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.Execute
End With
ActivePrinter = Drucker
ActiveDocument.PrintOut Background:=False
ActiveDocument.Close SaveChanges:=False
ActivePrinter = savDrucker
End Sub
'ENDE VBA-CODE --------------------------------------------------