Seitenränder

31/01/2008 - 17:09 von TomG | Report spam
Hallo,

Ich habe folgendes Problem unter Windows Server 2003 R2, Office 2003 SP2:
Ein automatisierter Dienst auf dem Server soll ein Worddokument aus einer
Datenbank lesen, und per Druckaufruf an einen PDF Drucker in ein PDF
umgewandelt werden.
Leider ist es so, das einige der Dokumente ungültige Seitenrànder haben. Das
hat zur Folge, dass auf dem Server Word gestartet wird, der Druckvorgang
beginnt und dann die Meldung "Seitenrànder ausserhalb des bedruckbaren
Bereichs, Fortsetzen Ja/Nein" erscheint. Serverseitig kann aber natürlich
niemand diese Meldung wegklicken, die Anwendung steht.

Aufgrund meiner Recherche hab ich mir das folgende zusammengebastelt und in
der normal.dot (es soll ja für alle Dokumente gelten) in einem eigenen
Klassenmodul namens PrintControl hinterlegt:


' initialisiere das Anwendungsobjekt(?)
Public WithEvents App As Word.Application

' globale Variablen, die vor/nach dem Druck geàndert werden sollen
Dim savEnvAlert As WdAlertLevel
Dim savEnvBackground As Boolean

' Instanz meiner Klasse erzeugen
Dim myPrintControl As New PrintControl

' Zuweisen des Event Handlers an das Anwendungsobjekt meiner Klasse
Sub Register_Event_Handler()
Set myPrintControl.App = Word.Application
End Sub

' vor dem Druck
Sub myPrintControl_DocumentBeforePrint(ByVal Doc As Document, Cancel As
Boolean)
' speichere Einstellungen
savEnvAlert = Application.DisplayAlerts
savEnvBackground = Options.PrintBackground

' setze gewünschte Einstellungen
Application.DisplayAlerts = wdAlertsNone
Options.PrintBackground = False

' Druck soll nicht gecancelled werden
Cancel = False
End Sub

' nach dem Druck
Sub myPrintControl_DocumentAfterPrint()
' Einstellungen wiederherstellen
Application.DisplayAlerts = savEnvAlert
Options.PrintBackground = savEnvBackground
End Sub


Wenn der Code seltsam aussieht liegt es daran, dass ich heute das erste mal
mit VBA zu tun habe, nicht alles was hier steht muss Sinn machen - leider
funktioniert es auch nicht. Bitte um möglichst detaillierte Antworten, da ich
wirklich erst bei Null stehe!

Vielen Dank im Voraus!

Grüsse

Tom
 

Lesen sie die antworten

#1 TomG
01/02/2008 - 11:42 | Warnen spam
Ok, habe noch ein paar Informationen gefunden, jetzt sieht mein Code so aus:


Klassenmodul "PrintControl":

' initialisiere das Anwendungsobjekt(?)
Public WithEvents App As Word.Application

' globale Variablen, die vor/nach dem Druck geàndert werden sollen
Dim savEnvAlert As WdAlertLevel
Dim savEnvBackground As Boolean


' vor dem Druck
Sub App_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
' speichere Einstellungen
savEnvAlert = Application.DisplayAlerts
savEnvBackground = Options.PrintBackground

' setze gewünschte Einstellungen
Application.DisplayAlerts = wdAlertsNone
Options.PrintBackground = False

' Druck soll nicht gecancelled werden
Cancel = False
End Sub

' nach dem Druck
Sub App_DocumentAfterPrint()
' Einstellungen wiederherstellen
Application.DisplayAlerts = savEnvAlert
Options.PrintBackground = savEnvBackground
End Sub

Modul "NewMacros":

' Instanz meiner Klasse erzeugen
Dim myPrintControl As New PrintControl

' Zuweisen des Event Handlers an das Anwendungsobjekt meiner Klasse
Sub Register_Event_Handler()
Set myPrintControl.App = Word.Application
End Sub


Zwei Probleme gibt es jetzt noch:

1.) Register_Event_Handler muss ich offenbar jedes mal zuerst manuell
ausführen, was mir natürlich überhaupt nicht weiterhilft. Làsst sich dieser
Makro automatisch immer ausführen, wenn ein Dokument, egal ob alt oder neu,
in Word geöffnet wird?

2.) Diese penetrante Fehlermeldung kommt trotz erfolgreichem Aufruf von
BeforePrint...

Es wàre wirklich sehr dringend hier eine Lösung zu finden, wenn Ihr also
irgendwie weiterhelfen könnt, wàr ich Euch sehr dankbar!

Grüsse

Tom

Ähnliche fragen