- möchte an der Textmarke "Logo", die bestehende Grafik ersetzen (neue
Grafik aus Datei .jpg Format)
die Textmarke befindet sich in der Kopfzeile, in einer Tabellenzelle, in
einem Textfeld
- bestehender Code:
Dim oAppWord As Word.Application
Dim WordDoc As Word.Document
Dim BookRange As Word.Range
Dim ils As Word.InlineShape
Set oAppWord = CreateObject("Word.Application")
Set WordDoc = oAppWord.Documents.Open("s:\TestMark.Doc")
Set BookRange = WordDoc.Bookmarks("Logo").Range
Set ils = WordDoc.InlineShapes.AddPicture("S:\Logo.jpg", False, True,
BookRange)
........
Frage:
- leider wird nichts ersetzt! was ist falsch?
(andere Textmarken mit Textbereichen kann ich ohne Probleme verändern!)
Danke für die Unterstützung.
Gruss
Martin
> - leider wird nichts ersetzt! was ist falsch?
> (andere Textmarken mit Textbereichen kann ich ohne Probleme verändern!)
das liegt an den Besonderheiten von Textfelder speziell in Kopfzeilen.
Auf die klassische Art werden nur Textmarken im Haupttextbereich erreicht.
In Deinem Fall musst Du die Kopfzeilen in den Abschnitten auf Shapes (dazu
zählen die Textfelder) durchsuchen:
Hier die Anpassung, sollte so bei Dir laufen (Achte auf falsche
Zeilenumbrüche!):
Sub LogoInTextframeBookmark()
Dim oAppWord As Word.Application
Dim WordDoc As Word.Document
Dim BookRange As Word.Range
Dim ils As Word.InlineShape
Dim oSec As Word.Section
Dim oHeader As Word.HeaderFooter
Dim oShp As Word.Shape
Const sLogo As String = "S:\Logo.jpg"
On Error Resume Next
Set oAppWord = GetObject(, "Word.application")
If oAppWord Is Nothing Then
Set oAppWord = CreateObject("Word.Application")
End If
Set WordDoc = oAppWord.Documents("TestMark.doc")
If WordDoc Is Nothing Then
Set WordDoc = oAppWord.Documents.Open("s:\TestMark.Doc")
End If
For Each oSec In WordDoc.Sections
For Each oHeader In oSec.Headers
For Each oShp In oHeader.Shapes
If oShp.TextFrame.HasText = True Then
If oShp.TextFrame.TextRange.Bookmarks.Exists("Logo") Then
Set BookRange = oShp.TextFrame.TextRange
Set ils = WordDoc.InlineShapes.AddPicture(sLogo, False, True, BookRange)
GoTo ende
End If
End If
Next oShp
Next oHeader
Next oSec
ende:
Set BookRange = Nothing
Set WordDoc = Nothing
Set oAppWord = Nothing
End Sub
--
Gruß Christian
~~~~~~~~~~~~
Antworten / Rückmeldungen nur in die NG!
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)
> > - leider wird nichts ersetzt! was ist falsch?
> > (andere Textmarken mit Textbereichen kann ich ohne Probleme verändern!)
Sorry habe leider keien zeit, aber Martin arbeitet mit einem InlineShape und
nicht mit einem Shape. ich denke das Problem ist das Gleiche wie du auch
schon hattest, dass der Ranfge nicht optimal definiert wurde. Auf
mypage.bluewin.ch/reprobst steht zwar die Lösung oder auch hier in der NG
aber ich finde sie im Moment nicht mehr. Oder im Buch ab S.800.
--
Thomas Gahler
MVP für WordVBA
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)
- Windows XP (SP1), Office XP (SP3)
> Sorry habe leider keien zeit, aber Martin arbeitet mit einem InlineShape und
> nicht mit einem Shape. ich denke das Problem ist das Gleiche wie du auch
schon klar.
Und mein Beispiel macht was es soll.
Das Problem ist, wenn ich das Problem richtig verstanden habe, wirklich das
Textfeld, das in einer Kopfzeile verankert ist.
Die bekommst Du bekannterweiser nur über die Section-Headers und wird als
Shape behandelt.
Außerdem bin ich erst auf Seite 42 ;-)))
--
Gruß Christian
~~~~~~~~~~~~
!Gebt Rückmeldung wenn Ihr weiterhin Antworten möchtet!
=> http://www.fruiture.de/perl/questions.html#intro
=> http://word.mvps.org
"Christian Freßdorf" schrieb:
> Hallo Martin,
>
> > - leider wird nichts ersetzt! was ist falsch?
> > (andere Textmarken mit Textbereichen kann ich ohne Probleme verändern!)
>
> das liegt an den Besonderheiten von Textfelder speziell in Kopfzeilen.
>.....................
Merci, habe Deine Hinweise eingebaut und getestet.
Folgendes Problem besteht:
- die bestehende Grafik in der Textbox ist weg (gelöscht), an deren Stelle
erscheint jetzt aber nicht die neue Grafik, sondern ein kleines weisses
Viereck mit rotem Kreuz darin (ich denke einfach mal um Anzuzeigen 'Hier ist
was falsch!').
Markiere ich das kleine weisse Viereck entpuppt es sich als
Grafik-Platzhalter und ich kann problemlos über. --> Einfügen, --> Grafik -->
aus Datei das neue Logo einfügen.
Hast Du eine Idee wo das Problem liegt?
Gruss
Martin
> - die bestehende Grafik in der Textbox ist weg (gelöscht), an deren Stelle
> erscheint jetzt aber nicht die neue Grafik, sondern ein kleines weisses
> Viereck mit rotem Kreuz darin (ich denke einfach mal um Anzuzeigen 'Hier ist
> was falsch!').
das Zeichen bedeutet, dass die Grafik nicht eingebunden werden konnte.
Passiert das nur bei der einen Grafik? Kannst Du sie von S:\Logo lokal
hinverschieben?
"Christian Freßdorf" schrieb:
>.......
> das Zeichen bedeutet, dass die Grafik nicht eingebunden werden konnte.
> Passiert das nur bei der einen Grafik? Kannst Du sie von S:\Logo lokal
> hinverschieben?
>.......
Stimmt, nur mit einem Logo funktioniert's nicht. Mit den anderen 5 klappt's.
Lasse das eine Logo neu erstellen.
Danke für Deine Hilfe, sie ist wirklich toll und nicht selbstverständlich!
Gruss
Martin