der code liegt in einer *.dot und läuft eben beim erstellen eines
neuen doc´s ;-)
wenn ich mit folgendem code grafiken in die kopfzeilen der ersten und
der folgenden seiten reinschiebe ist bei mir daheim und auf anderen
rechnern alles schick ;-)
[code]
Private Sub Document_New()
'grafik in kopfzeile aller seiten eines dokumentes laden und
positionieren
Dim oShape As Shape, oRange As Range
Dim Pfad As String
Pfad = "C:\z_vorlagen_bastel\logo_sw.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Set oShape = ActiveDocument.Shapes.AddPicture(FileName:=Pfad, _
LinkToFile:=False, SaveWithDocument:=True,
Anchor:=oRange)
'optionale Formatierungen
oShape.Height = 102
oShape.Width = 592.45
oShape.Left = CentimetersToPoints(-2.01)
oShape.Top = CentimetersToPoints(0.1)
Call Sektion2
End Sub
Private Sub Sektion2()
'grafik in Kopfzeile der ersten Seite laden und positionieren
Dim oShape As Shape, oRange As Range
Dim weg As String
weg = "C:\z_vorlagen_bastel\temp_sw_mlogo.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range
Set oShape = ActiveDocument.Shapes.AddPicture(FileName:=weg, _
LinkToFile:=False, SaveWithDocument:=True,
Anchor:=oRange)
'optionale Formatierungen
oShape.Height = 838.5
oShape.Width = 592.45
oShape.Left = CentimetersToPoints(-2.01)
oShape.Top = CentimetersToPoints(0.1)
[/code]
nun sitz ich an nem rechner mit sp3 auf office2003 und hier kommt
alles durcheinander - die grafiken schieben mir den text aus der
vorlage nach unten - scheint irgendwie mit dem anker zu tun zu haben?
habt ihr ne idee was ich machen muss damit die grafiken den text NICHT
verschieben?
aber ich brauche doch den anker irgendwie um die grafik in der
kopfzeile zu positionieren?
hiiiilfe - oder liegt das an nem bug im sp3 für office - weil
daheim mit 2007 und auf rechnern mit sp2 für office 2003 ist alles
schön?
wäre mir ne echte hilfe
euch nen tolles we und so
der jens
> nun sitz ich an nem rechner mit sp3 auf office2003 und hier kommt
> alles durcheinander - die grafiken schieben mir den text aus der
> vorlage nach unten - scheint irgendwie mit dem anker zu tun zu haben?
>
Ich schätze, die Grafik wird mit einem Textfluss versehen, statt
"hinter" den Text gelegt. Kann sein, dass beim Installieren von SP3
die Standardeinstellung (Extras/Optionen/Allgemein) für neu eingefügte
Grafiken geändert wurde...
Probiere es mit
oShape.WrapFormat.Type = wdWrapBehind
Cindy Meister
Co-Autor von »Microsoft Word-Programmierung Das Handbuch« (MS Press)
http://www.word.mvps.org
http://homepage.swissonline.ch/cindymeister
Rückfragen & Antworten nur in der Newsgroup, bitte!
der witz ist also:
nehme ich den Code von Dir:
oShape.WrapFormat.Type = wdWrapBehind
dann funktioniert es bei mir daheim (2007) - im Büro nicht (Office2003
sp2) - beim Freund mit 2003 und sp3 auch nicht so recht - es wird auf
beiden Systemen da irgendwie ein Anker gesetzt - der Text des Briefes
fängt erst auf der zweiten Seite an und ich kann nicht mal einfach die
Leerzeilen löschen denn die gibt es nicht - wenn ich auf der ersten
Seite an der angezeigten marke den cursor setze und "entf" drücke dann
holt es sich den Text von Seite 2 Zeilenweise und löscht den -
sozusagen wie eine "Megaabsatzmarke" - ist schon komisch ;-(
nehme ich: oShape.ZOrder msoSendBehindText
dann funktioniert es bei mir daheim (2007) - im Büro auch supi
(Office2003 sp2) - beim Freund mit 2003 und sp3 immer noch nicht ;-(
ist doch ne tolle welt dieses vba ;-)
na mal sehen - eventuell hat hier ja jemand noch ne Idee oder ich
finde beim bummeln durch das web noch was passendes ;-)
es sind aber überall die verweise richtig gesetzt und und und ;-)
wie gesagt - mal schauen was die zeit demnächst so bringt ;-)
viele Grüße aus Berlin
der Jens
> nehme ich: oShape.ZOrder msoSendBehindText
> dann funktioniert es bei mir daheim (2007) - im Büro auch supi
> (Office2003 sp2) - beim Freund mit 2003 und sp3 immer noch nicht ;-(
>
> ist doch ne tolle welt dieses vba ;-)
>
> na mal sehen - eventuell hat hier ja jemand noch ne Idee oder ich
> finde beim bummeln durch das web noch was passendes ;-)
>
Bei irgendwelchen Versionen von Word (bin nicht mehr sicher, welchen)
musste man den wdWrapBehind Befehl mehrmals ausführen - das erste Mal
hat er keine Wirkung. Kannst probieren, diese Codezeile mehrmals
auszuführen, um zu sehen, ob das etwas bringt.
Ich würde beim Freund schauen, ob Du es als Benutzer (ohne VBA)
hinkriegst. Mit VBA gehts nur, wenn es auch als Benutzer geht. Mache
einfach "von Hand" das, was das Makro tun soll, um festzustellen, wo
es happert.
Übrigens: jede Grafik hat einen Anker.
habe mich als newbie da jetzt noch mal reingekniet und ich denke mir -
dass ich mit
[code]
'optionale Formatierungen
oShape.Height = 838.5
oShape.Width = 592.45
oShape.Left = CentimetersToPoints(-2.01)
oShape.Top = CentimetersToPoints(0.1)
[/code]
ja eigentlich die Kopfzeiele formatiert habe anstatt die darin
enthaltene Grafik ;-) und dass damit alles durcheinander kommt - seh
ich das richtig?
wenn ich es nun gaaaaanz einfach so mache
[code]
Dim Pfad As String
Pfad = "C:\z_vorlagen\zz_bilder\logo_0.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Set oShape = ActiveDocument.Shapes.AddPicture(FileName:=Pfad, _
LinkToFile:=False, SaveWithDocument:=True,
Anchor:=oRange, _
Left:=CentimetersToPoints(-2.01),
Top:=CentimetersToPoints(0.1), Width:=592.45, Height:=838.5)
[/code]
scheint erst mal alles so zu funktionieren wie ich es eigentlich
wollte - die a4-Sieten-große Grafik schiebt sich in den Hintergrund
der Seite und gut - muss zwar noch ein wenig rumtesten aber mal
sehen ;-)
Dazu noch ne kleine Frage: mit dem Begriff "
Left:=CentimetersToPoints(-2.01) " setze ich die Grafik ja 2,01 cm
links vom Seitenrand - ändert der user den Seitenrand verschiebt sich
eben auch die Grafik - nur wie es an der Stelle heißen soll, damit
sich die Seite am Seitenrand ausrichtet kann ich nicht rausbekommen -
oder hängt es damit zusammen dass für vba ja gar nicht bekannt ist wo
der Seitenrand ist - mit dem makrorecorder komme ich zumindest an
dieser Stelle nicht so recht weiter ;-) - die grafik soll sozusagen in
der "kopfzeile" an ihrer position bleiben egal welche Seitenränder
eingestellt werden ;-)
ansonsten erst mal bis hierher vielen Dank für die Hilfe und so
der Jens
> ja eigentlich die Kopfzeiele formatiert habe anstatt die darin
> enthaltene Grafik ;-) und dass damit alles durcheinander kommt - seh
> ich das richtig?
Nein du formatierst da die Grafik (oShape)
> [...] sich die Seite am Seitenrand ausrichtet kann ich nicht
> rausbekommen -
> oder hängt es damit zusammen dass für vba ja gar nicht bekannt ist wo
Du suchts diese beiden Eigenschaften
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
Und dann würde ich dir folgendes Coding empfehlen.
Ist übersichtlicher weil alle Eigenaschaften am gleichen Ort gestezt werden.
Die Grafik sollte immer benannt werden
Sub Test()
Dim oShape As Word.Shape
Set oShape = ActiveDocument.Shapes.AddPicture( _
FileName:=Pfad, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Anchor:=oRange)
With oShape
.Name = "Logo"
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Height = 838.5
.Width = 592.45
.Left = CentimetersToPoints(-2.01)
.Top = CentimetersToPoints(0.1)
End With
End Sub
--
Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)
- Windows XP (SP2), Office XP (SP3)
bei mir und im Büro funktioniert das auch alles wieder wunderbar - nur
dieser eine Rechner (office 2003 mit sp3) macht irgendwelche mätzchen
und ich weiß immer nicht, ob jetzt nen Fehler im code ist oder ob das
sp3 da nen Bug hat - aber wenn der code von Dir ist wird er ja wohl
funktionieren - da ich ja die Kopfzeile der ersten Seite anders mache
musste ich den Code etwas wandeln aber er müßte richtig sein ;-)
Ausgangslage: wenn ich ein einfachs Dokument habe - schreibe da ne
ganz normale Adresse für einen Brief rein und sage dann - Kopfzeile
öffnen - Einfügen - Grafik - und nehme dann die a4-Seiten-große Grafik
und setze die in die Kopfzeile - dann wird diese auf die Breite der
Kopfzeile skaliert eingesetzt und dadurch schiebt es mir in diesem
Augenblick die Adresse nach unten da die Kopzeile ja auf einmal fast
dreiviertel-Seiten-hoch wird - Schließe ich jetzt die Kopfzeile von
Hand bleibt die Kopfzeile so riesengroß und die Adresse steht irgendwo
unten am Seitenrand
nehme ich jetzt deinen Code zum Einsetzen der Grafik bleibt bei mir
(2007) die Adresse an Ihrer Position - im Büro (office 2003 sp2) auch
- nur dieser eine Rechner ( 2003 mit sp3) - und das ist der vom Chef
*schnief* - der läßt die Kopfzeile so riesengroß und die adresse steht
sonstwo - wenn ich dann die Grafik per code auch noch auf
Originalgröße skaliere und positioniere dann steht da die Adresse eben
immer auf der zweiten Seite - es ist wie verhext
Alles andere hab ich ja mit hilfe vieler netter Leute hinbekommen -
aber hier gehen mir langsam die Ideen aus ;-)
der derzeitige "ausprobiercode" lautet
[code]
Private Sub Document_New()
'grafik in kopfzeile alle seiten
Dim oShape As Word.Shape, oRange As Range
Dim weg0 As String
weg = "C:\z_vorlagen\zz_bilder\logo_0.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Set oShape = ActiveDocument.Shapes.AddPicture( _
FileName:=weg, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Anchor:=oRange)
With oShape
.Name = "logo"
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Height = 102
.Width = 592.45
.Left = CentimetersToPoints(0#)
.Top = CentimetersToPoints(0.1)
End With
Call Sektion2
End Sub
Private Sub Sektion2()
Dim oShape As Word.Shape, oRange As Range
Dim Pfad As String
Pfad = "C:\z_vorlagen\zz_bilder\temp_0.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range
Set oShape = ActiveDocument.Shapes.AddPicture( _
FileName:=Pfad, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Anchor:=oRange)
With oShape
.Name = "temp"
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Height = 838.5
.Width = 592.45
.Left = CentimetersToPoints(0#)
.Top = CentimetersToPoints(0.1)
End With
End Sub
[/code]
die eingesetzten Grafiken haben im Original die Größen:
temp_0.jpg - 2480 pix breit und 3508 pix hoch (a4)
logo_0.jpg - 2480 pix breit und 357 pix hoch
hat er da auf seinem rechner irgendwo in den Einstellungen ein
Häckchen gesetzt das ich nicht finden kann oder oder oder ...........
na mal schauen - IRGENDWIE MUSS! es da ja eine Lösung geben - ausser
den Rechner neu aufzusetzen und auf SP3 zu verzichten ;-)
Dir und den anderen Lesern erst mal ein tolles Wochenende
der Jens aus Berlin
"jensspeedy" schrieb
> bei mir und im Büro funktioniert das auch
> alles wieder wunderbar - nur dieser eine
> Rechner (office 2003 mit sp3) macht irgendwelche
> mätzchen
ich habe den Thread nicht im Detail verfolgt.
Dein Problem könnte aber damit zusammenhängen, dass im einen Fall Grafiken
standardmäßig inline (Mit Text in Zeile), auf dem anderen Rechner
standardmäßig mit einem anderen Textumbruch (z.B. Hinter den Text) eingefügt
werden.
Das lässt sich zwar in den Word-Optionen global ändern, du solltest aber
wohl besser in deiner VBA-Lösung mit auf den Weg geben, mit welcher Art von
Textumbruch die Grafik zu formatieren ist.
--
Viele Grüße
Lisa
MS MVP Word
auf jeden fall - wenn ich es mit:
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Set oShape = ActiveDocument.Shapes.AddPicture(FileName:=Pfad, _
LinkToFile:=False, SaveWithDocument:=True,
Anchor:=oRange)
oShape.ZOrder msoSendBehindText
versuche habe ich zu hause und im büro kein problem - der rechner mit
2003 und sp3 wschiebt den text des Hauptdokuments auf die zweite seite
versuche ich es mit
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Set oShape = ActiveDocument.Shapes.AddPicture(FileName:=Pfad, _
LinkToFile:=False, SaveWithDocument:=True,
Anchor:=oRange)
oShape.WrapFormat.Type = wdWrapBehind
dann mag die keiner der rechner............und alle schieben den text
auf die andere seite
mit
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range
Set oShape = ActiveDocument.Shapes.AddPicture(FileName:=weg, _
LinkToFile:=False, SaveWithDocument:=True,
Anchor:=oRange, Left:=CentimetersToPoints(-2.01),
Top:=CentimetersToPoints(0.1), Width:=592.45, Height:=838.5)
spinnt wieder nur der rechner mit 2003 sp3
gruß jens
> hi lisa - an irgendsowas wird es schon liegen denk ich -
Stimmt an irgendwas liegt es.
Cindy hat dir mal empfohlen deine Grafik manuell einzufügen und zu
positionieren. Hast du das geschafft?
- Falls ja, diese Einstellungen im Code aufnehmen
- Falls nein, weiter probieren bis es geht, erst dann wirst du es auch mit
VBA schaffen, denn VBA kann nicht mehr als du mit Maus und tastatur auch
kannst.
> aber ich bin
> doch eigentlich in der kopfzeile unterwegs - warum verschiebt es dann
> den text im Hauptdokument?
Weil die Grösse der Kopfzeile verändert wird. Sie wird grösser als der in
Datein / Seite einrichten vorbelegte Platz ist.
jensspeedy wrote:
> hi lisa - an irgendsowas wird es schon liegen denk ich - aber ich bin
> doch eigentlich in der kopfzeile unterwegs - warum verschiebt es dann
> den text im Hauptdokument?
wenn die Grafik als Shape eingefügt wird, tut es das nicht (also, je
nach Textumflusseinstellungen). Wird die Grafik als InlineShape
eingefügt _und_ wird dadurch der Kopfzeilenbereich grösser, wird auf
jeden Fall der Fliesstextbereich kleiner.
Wenn es wirklich an der standard-Einfüge-Option liegt, dann kannst Du
deren Wert vorher sichern, gewünscht setzen, und nachher wieder
restaurieren. Bin da aber eher skeptisch, weil Du im Code die Art und
Weise setzt, wie eingefügt werden soll.
Gruss
Robert
--
/"\ ASCII Ribbon Campaign | MSFT |
\ / | MVP | Scientific Reports
X Against HTML | for | with Word?
/ \ in e-mail & news | Word | http://www.masteringword.eu/
also wenn ich es von Hand mache und dann sage "hinter den text" - dann
springt die Kopfzeile natürlich wieder hoch und alles ist schön - an
dem "bösen Rechner" hab ich das auch schon probiert......mit dem
makrorecorder komm ich an dieser Stelle ja nicht weiter weil ich dann
keine Möglichkeit habe die Grafik zu formatieren wenn der
läuft.........
ich habe ja nun in den oben genannten codes schon mehrere
Möglichkeiten probiert die grafik dann hinter den Text zu setzen -
schlägt aber irgendwie alles fehl *schnief* - zumindest auf dem "bösen
Rechner"
werde jetzt erst mal mit Hundi nen Abend im Grünen machen und bin
morgen wieder Online - Euch nen tollen Abend
der Jens
> also wenn ich es von Hand mache und dann sage "hinter den text" - dann
> springt die Kopfzeile natürlich wieder hoch und alles ist schön - an
> dem "bösen Rechner" hab ich das auch schon probiert......mit dem
> makrorecorder komm ich an dieser Stelle ja nicht weiter weil ich dann
> keine Möglichkeit habe die Grafik zu formatieren wenn der
> läuft.........
>
Nachdem Einfügen ist die Grafik markiert (selektioniert), oder? Dann
Umsch+F10 um den Kontextmenü zu öffnen. Von da kannst Du mit der
Tastatur arbeiten, wenn die Maus nicht mehr funktioniert.
nach dem ganzen hin und her und ner Menge Versuche und so bin ich
heute nachmittag fast "wahnsinng" geworden - man bekam es einfach
nicht hin, bei laufendem Makrorecorder beim Einsetzen einer Grafik in
die Kopzeile diese "hinter den Text" zu setzen - irgendwann laß ich
dann irgendwo im web bei google & co - "Word setzt den Hintergrund
auch in die Kopfzeile......" - wie blind ist man doch manchmal -
also Makrorecorder angeworfen - Hintergrund eingefügt und dann den neu
entstandenen code durchforstet ;-)
und siehe da - eine mir bis dahin unbekannte codezeilen-Kombination
war aufgetaucht - und mit dieser funktioniert es nun auch auf dem
bösen Rechner - Büro muss ich dann eben erst am Montag testen ;-)
der komplette - noch unaufgeräumte code schaut nun wie folgt aus ;-)
[code]
Private Sub Document_New()
'grafik in kopfzeile alle seiten
Dim oShape As Word.Shape, oRange As Range
Dim weg0 As String
weg0 = "C:\z_vorlagen\zz_bilder\logo_0.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range
Set oShape = ActiveDocument.Shapes.AddPicture( _
FileName:=weg0, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Anchor:=oRange)
With oShape
.Name = "logo"
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Height = 102
.Width = 592.45
.Left = CentimetersToPoints(0#)
.Top = CentimetersToPoints(0.1)
.WrapFormat.Side = wdWrapNone
.WrapFormat.Type = 3
End With
Call Sektion2
End Sub
Private Sub Sektion2()
'grafik in kopfzeile erste seite
Dim oShape As Word.Shape, oRange As Range
Dim Pfad As String
Pfad0 = "C:\z_vorlagen\zz_bilder\temp_0_fax.jpg"
Set oRange =
ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range
Set oShape = ActiveDocument.Shapes.AddPicture( _
FileName:=Pfad0, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Anchor:=oRange)
With oShape
.Name = "temp"
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Height = 838.5
.Width = 592.45
.Left = CentimetersToPoints(0#)
.Top = CentimetersToPoints(0.1)
.WrapFormat.Side = wdWrapNone
.WrapFormat.Type = 3
End With
End Sub
[/code]
vielen vielen Dank auf jeden Fall Allen die mitgeholfen, sich den Kopp
zerbrochen und Tipps gegeben haben ;-)
Euch nen tollen Sonntag und so
der Jens aus Berlin