Daniel Simon
2006-02-23 14:58:57 UTC
Hallo NG,
ich habe einem Word-Objekt (Shape) einen Namen zugeordnet um es löschen zu
können, allerdings funktioniert das ganze nicht so wie ich mir das
vorgestellt habe. Das was da passiert kommt mir ziemlich merkwürdig vor und
sieht für mich wie ein Bug in Word aus.
Ich wollte in einer abschnittsgeschützten Kopfzeile ein Wasserzeichen
erstellen, das entfernt wird, wenn ich eine von mir erstellte Schaltfläche
in der Symbolleiste drücke.
Den dazugehörigen Code habe ich damals von Dietmar Feurer bekommen, als ich
hier die Frage stellte, wie ich mit VBA ein Word-Art erzeuge
(MID:***@TK2MSFTNGP09.phx.gbl).
Wenn ich aber nun die Schaltfläche drücke, um das Wasserzeichen entfernen
zu können erhalte ich einen Laufzeitfehler '91': Objektvariable oder
With-Blockvariable nicht festgelegt.
Das für mich nicht verständliche ist, das es funktioniert, wenn ich anstatt
Sub Document_New() Sub EntwurfEinfuegen schreibe. Manuell das Wasserzeichen
zu entfernen über Extras->Makros->Makro ausführen funktioniert allerdings
bei Sub Document_New(), sofern man das Makro nicht über die Schaltfläche
schon ausgeführt hat. Dabei ist der Code, der durch die Schaltfläche
ausgeführt wird eigentlich der selbe.
Also nochmal in Kurzform:
Dokument_New() + Schaltfläche benutzen (die EntwurfLoeschen() ausführt):
funktioniert nicht
Dokument_New() + Extras->Makros->Makro ausführen (EnwurfLoeschen()):
funktioniert
EntwurfEinfuegen (muss halt manuell audgeführt werden)+ Schaltfläche
benutzen:
funktioniert
Der von mir modifizierte Code ist folgender:
'###Code-Anfang###
Public oShape As Shape
Sub Document_New()
GrafikErstellen oShape
End Sub
Private Sub GrafikErstellen(ByRef oShape As Shape)
Dim KZ As HeaderFooter
Set KZ = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)
Set oShape = KZ.Shapes.AddTextEffect(0, "Entwurf", _
"Arial", 72, True, False, 0, 0, KZ.Range)
oShape.Fill.ForeColor = RGB(192, 192, 192)
oShape.Line.ForeColor = RGB(192, 192, 192)
oShape.ZOrder msoSendBehindText
oShape.Width = ActiveDocument.Sections(1).PageSetup.PageHeight - 200
oShape.Rotation = -45
oShape.Left = -100
oShape.Top = 300
End Sub
Sub EntwurfLoeschen()
oShape.Delete
End Sub
'###Code-Ende###
Ich hoffe, dass mir dieses für mich seltsame Verhalten erklärt werden kann.
Ich will erreichen, dass der Code richtig beim Erstellen eines neuen
Dokuments ausgeführt wird, so dass man ihn mit der Schaltfläche löschen
kann.
ich habe einem Word-Objekt (Shape) einen Namen zugeordnet um es löschen zu
können, allerdings funktioniert das ganze nicht so wie ich mir das
vorgestellt habe. Das was da passiert kommt mir ziemlich merkwürdig vor und
sieht für mich wie ein Bug in Word aus.
Ich wollte in einer abschnittsgeschützten Kopfzeile ein Wasserzeichen
erstellen, das entfernt wird, wenn ich eine von mir erstellte Schaltfläche
in der Symbolleiste drücke.
Den dazugehörigen Code habe ich damals von Dietmar Feurer bekommen, als ich
hier die Frage stellte, wie ich mit VBA ein Word-Art erzeuge
(MID:***@TK2MSFTNGP09.phx.gbl).
Wenn ich aber nun die Schaltfläche drücke, um das Wasserzeichen entfernen
zu können erhalte ich einen Laufzeitfehler '91': Objektvariable oder
With-Blockvariable nicht festgelegt.
Das für mich nicht verständliche ist, das es funktioniert, wenn ich anstatt
Sub Document_New() Sub EntwurfEinfuegen schreibe. Manuell das Wasserzeichen
zu entfernen über Extras->Makros->Makro ausführen funktioniert allerdings
bei Sub Document_New(), sofern man das Makro nicht über die Schaltfläche
schon ausgeführt hat. Dabei ist der Code, der durch die Schaltfläche
ausgeführt wird eigentlich der selbe.
Also nochmal in Kurzform:
Dokument_New() + Schaltfläche benutzen (die EntwurfLoeschen() ausführt):
funktioniert nicht
Dokument_New() + Extras->Makros->Makro ausführen (EnwurfLoeschen()):
funktioniert
EntwurfEinfuegen (muss halt manuell audgeführt werden)+ Schaltfläche
benutzen:
funktioniert
Der von mir modifizierte Code ist folgender:
'###Code-Anfang###
Public oShape As Shape
Sub Document_New()
GrafikErstellen oShape
End Sub
Private Sub GrafikErstellen(ByRef oShape As Shape)
Dim KZ As HeaderFooter
Set KZ = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)
Set oShape = KZ.Shapes.AddTextEffect(0, "Entwurf", _
"Arial", 72, True, False, 0, 0, KZ.Range)
oShape.Fill.ForeColor = RGB(192, 192, 192)
oShape.Line.ForeColor = RGB(192, 192, 192)
oShape.ZOrder msoSendBehindText
oShape.Width = ActiveDocument.Sections(1).PageSetup.PageHeight - 200
oShape.Rotation = -45
oShape.Left = -100
oShape.Top = 300
End Sub
Sub EntwurfLoeschen()
oShape.Delete
End Sub
'###Code-Ende###
Ich hoffe, dass mir dieses für mich seltsame Verhalten erklärt werden kann.
Ich will erreichen, dass der Code richtig beim Erstellen eines neuen
Dokuments ausgeführt wird, so dass man ihn mit der Schaltfläche löschen
kann.
--
Gruß Daniel
benutze Win 2k(SP4), Office 97(SR2)
MS-Word FAQ: http://mypage.bluewin.ch/reprobst/
Gruß Daniel
benutze Win 2k(SP4), Office 97(SR2)
MS-Word FAQ: http://mypage.bluewin.ch/reprobst/