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:
-
Ich habe ein Serienbriefhauptdokument, mit allem Drum und Dran erstellt, also auch mit der Verbindung zur (Access-) Datenquelle.
-
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 --------------------------------------------------
- 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_