[Word 2003] Seitenränder in der Voransicht abgeschnitten

Frezl

Erfahrenes Mitglied
Salü allerseits,

ich arbeite an einem Word-Dokument, dessen Seitenränder unterhalb des druckbaren Bereichs meines Standard-Druckers liegen. Das ist bis dahin kein Problem, da ich das Dokument nur als PDF exportieren will und das funktioniert auch wie es soll. Es hat aber zur Folge, dass in der Seitenansicht die Ränder auf das Maß des Druckers abgeschnitten werden. Um die ganze Seite bis zum Rand in die Seitenansicht zu bekommen, muss ich das Dokument erst ein Mal als PDF drucken. Danach stimmt auch die Seitenansicht.
Das Problem ist aber, dass bei jedem Neustart von Word die wieder Einstellungen für den Standarddrucker geladen werden und ich keinen Bock habe, das recht umfangreiche Dokument immer erst einmal als PDF zu exportieren, bevor ich richtig in Word arbeiten kann.

Wie kann ich dieses Problem beheben, ohne dass ich den PDF-Drucker als Standarddrucker fürs ganze System einstellen muss? Kann ich ihn vielleicht irgendwie nur diesem einen Dokument als Standard zuweißen?

Ich bitte um Rat.

Viele Grüße,
Frezl
 
Moin,

ich würde das per Makro erledigen. Prinzipiell würde das so aussehen:
Standarddrucker auslesen und merken
Automatisch beim Öffnen des Dokuments (Sub AutoOpen)
Standarddrucker auf PDF setzen
..
Automatisch beim Schließen des Dokuments (Sub AutoClose)
Original-Standarddrucker wieder setzen
 
Hey Drogist,

Danke für deine Antwort. Damit ist aber nicht der Kern des Problems beseitigt. Ich gehöre zu den Menschen, die exzessiven Gebrauch des Multi-Taskings machen. Es könnte also sein, dass ich - während das Word-Dokument geöffnet ist - etwas im Browser ausdrucken will. Und zwar auf dem physikalischen Drucker. Und wenn ich mich da drauf verlass, dass der wie gewohnt als Standard-Drucker eingestellt ist, hab ichs verkackt :p

Und mit Makros kenn ich mich leider überhaupt nicht aus :-(

Viele Grüße,
Frezl
 
Moin,

wen es denn so wichtig ist, dann arbeite mit diesem Programm in einer VM (virtual machine). Das sollte dann so gehen, da die VM ja ein virtueller eigener Rechner mit separaten Einstellungen ist.
 
Hallo Frezl,
also ich habe es bei mir eben so getestet und es hat geklappt:

Visual Basic:
Public WithEvents wd As Word.Application
Public drucker As String
Public datei As String

Private Sub Document_Open()
Set wd = Word.Application

drucker = ActivePrinter
datei = ThisDocument.Name

wd.ActivePrinter = "FreePDF" 'Name des Druckers ändern!

End Sub


Private Sub wd_WindowActivate(ByVal Doc As Document, ByVal Wn As Window)

If Wn = datei Then
    wd.ActivePrinter = "FreePDF" 'Name des Druckers ändern!
Else
    wd.ActivePrinter = drucker
End If

End Sub

Private Sub wd_WindowDeactivate(ByVal Doc As Document, ByVal Wn As Window)

If Wn = datei Then
    wd.ActivePrinter = drucker
End If

End Sub

Du kannst diesen Code so wie er ist einfach kopieren und dann im VB-Editor (Alt+F11) beim Dokument einfügen. Was du dann halt noch ändern musst, ist der Name des Druckers der verwendet werden soll.

Getestet habe ich das zwar mit Word 2000 aber das sollte keine Rolle spielen.

Hoffe es hilft dir.

Gruß Thomas
 
Hey tombe,

genau sowas hab ich gesucht! :) Nur leider funktionierts bei mir nicht :-( Habs eingefügt in "ThisDocument" in meinem Project. Den Druckernamen hab ich zu "FreePDF XP" geändert, so heißt mein PDF-Drucker, mit dem die Seitenansicht stimmt. Dann gespeichert. Wenn ich jetzt in die Seitenansicht gehe, seh ich keinen Unterschied. Die Ränder sind immer noch beschnitten. Auch im Druckdialog ist weiterhin der Standarddrucker ausgewählt.

Wenn ichs richtig verstanden hab, macht dein Skript folgendes:
Es speichert beim Öffnen des Dokuments die Namen des aktiven Druckers (also des Standarddruckers) und des aktuellen Dokuments. Danach setzts den aktiven Drucker auf "FreePDF XP".

In den anderen beiden Subs wird jeweils der aktive Drucker getauscht. Aber was sind WindowActivate bzw Deactivate für Events? Wann werden die getriggert? Wenn ich in die Seitenansicht gehe, oder wenn ich zu diesem Worddokument wechsle?

Grüße,
Frezl


// EDIT: Hab nach etwas Recherche zum Thema VBA versucht, der Sache mit einem Makro beizukommen. Aber ich kann Makros nicht abspielen :p Selbst wenn ich die Sicherheitseinstellungen auf niedrig hab, kommt die Meldung, dass Makros deaktiviert seien :p
 
Zuletzt bearbeitet:
Hi Frezl,

beim Öffnen des Dokuments wird wie du oben geschrieben hast der Drucker "getauscht". So bald ein anderes Fenster (Word oder was auch immer) aktiviert bzw. das Fenster dieses Dokumentes deaktiviert wird, wird geprüft ob der Drucker wieder auf den Standard Drucker gewechselt werden muss oder nicht (deshalb wird der Name des Dokuments auch gespeichert).

Das es bei dir nicht geht liegt meiner Meinung nach zu 100% daran das keine Makros ausgeführt werden. Es ist ja schließlich eines.

Ich habe 2003 nur mal kurz gesehen und es gibt da wohl verschiedene Einstellungen die gemacht werden müssen damit Makros ausgeführt werden.
 
Yeah, geilo! Makros laufen jetzt. Hatte nicht beachtet, dass man nach dem Ändern der Sicherheitseinstellungen Word neu starten muss. Manchmal sinds die Kleinigkeiten, die einem das Leben schwer machen :p

Dein Skript läuft super. Macht genau das, was ich wollte :) Hab mit auch noch nen Befehl dazu geschrieben, der die Anzeige des Markups deaktiviert. Keine Ahnung, warum Word das immer zwanghaft einblendet...

Viele Grüße und vielen Dank!
Frezl

// EDIT: Wieder mal zu früh gefreut :-( Hab nen kleinen Fehler entdeckt: Wenn ich in der Seitenansicht bin und dann die Anwendung wechsle, bleibt Free PDF XP als Standarddrucker aktiviert. Wenn ich aber zurück nach Word in die immer noch aktivierte Seitenansicht wechsle, wird der physikalische Standarddrucker eingestellt und die Ränder nachträglich beschnitten. Ich hab dann also plötzlich den Gegenteiligen Effekt. Es fehlt das Event für das Wechseln von der Seitenansicht in ein anderes Dokument. Kannst du mir zeigen, wie ich das einbauen kann?
 
Zuletzt bearbeitet:
Hi Frezl,

habe eine etwas geänderte Version zu bieten:

Visual Basic:
Public WithEvents wd As Word.Application
Public standard_drucker As String
Public pdf_drucker As String
Public datei As String

Private Sub Document_Open()
Set wd = Word.Application

standard_drucker = ActivePrinter
pdf_drucker = "FreePDF"

datei = ThisDocument.Name

wd.ActivePrinter = pdf_drucker

End Sub

Private Sub wd_DocumentChange()

If wd.ActiveDocument = datei Then
    wd.ActivePrinter = pdf_drucker
Else
    wd.ActivePrinter = standard_drucker
End If

End Sub

Damit wird immer beim Wechsel des aktiven Dokuments geprüft ob der Dateiname entsprechend gesetzt ist oder nicht und entsprechend auch der Drucker gewechselt.
Was hiermit allerdings nicht geht ist der Wechsel von Word zu eine beliebigen Anwendung (z.B. Explorer, eMail-Programm, Excel, ...).
Habe bis jetzt leider noch keine Möglichkeit gefunden wie ich zusätzlich zur obigen Überprüfung prüfen kann ob Word selber den "Fokus" verliert.

Kannst diesen Code ja trotzdem mal übernehmen. Denke das du trotz des Problems hiermit besser klar kommst.

Gruß Thomas
 

Neue Beiträge

Zurück