ich habe in Word 2003 in Kopf- und Fußzeile Grafiken/Bilder
per IncludePicture eingefügt (als Briefpapier).
Wie kann man diese Bilder beim Starten von Word automatisch
akualisieren (also der Makro-Ersatz zu Grafik markieren und
dann F9 drücken)?
Welche Auto-makros (AutoNew, AutoOpen, ...) sind für
.doc und .dot notwendig, um die Aktualisierungsfunktion aufzurufen?
Grüße
Stefan
> ich habe in Word 2003 in Kopf- und Fußzeile Grafiken/Bilder
> per IncludePicture eingefügt (als Briefpapier).
> Wie kann man diese Bilder beim Starten von Word automatisch
> akualisieren (also der Makro-Ersatz zu Grafik markieren und
> dann F9 drücken)?
Die nachstehende Prozedur aktualisiert die alle Felder (ausser die
Verzeichnisse) in allen .StoryRanges. Falls du nur die IncludePictures
möchtest, dann ein zusätzliches "If" einbauen.
Sub Demo()
Dim rng As Word.Range
For Each rng In ActiveDocument.StoryRanges
rng.Fields.Update
Do While Not (rng.NextStoryRange Is Nothing)
Set rng = rng.NextStoryRange
rng.Fields.Update
Loop
Next rng
End Sub
> Welche Auto-makros (AutoNew, AutoOpen, ...) sind für
> .doc und .dot notwendig, um die Aktualisierungsfunktion aufzurufen?
AutoOpen beim öffnen des Dokuments
AutoNew beim anlegen eines neuen Dokuments basierend auf der Dokumentvorlage
AutoClose beim schliessen des Dokuments
--
Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)
- Windows Vista (SP2), Office 2007 (SP2)
Thomas Gahler wrote:
>> ich habe in Word 2003 in Kopf- und Fu�zeile Grafiken/Bilder
>> per IncludePicture eingef�gt (als Briefpapier).
>> Wie kann man diese Bilder beim Starten von Word automatisch
>> akualisieren (also der Makro-Ersatz zu Grafik markieren und
>> dann F9 dr�cken)?
> Die nachstehende Prozedur aktualisiert die alle Felder (ausser die
> Verzeichnisse) in allen .StoryRanges. Falls du nur die IncludePictures
> m�chtest, dann ein zus�tzliches "If" einbauen.
>
> Sub Demo()
> Dim rng As Word.Range
>
> For Each rng In ActiveDocument.StoryRanges
> rng.Fields.Update
> Do While Not (rng.NextStoryRange Is Nothing)
> Set rng = rng.NextStoryRange
> rng.Fields.Update
> Loop
> Next rng
> End Sub
Das funktioniert leider nicht (mehr).
Das hatte ich so im Dezember in meine Dokumente eingebaut. Aber
jetzt wird die Grafik/das Bild nicht mehr aktualisiert.
Per Hand (also per Maus markieren und anschl. F9) geht's.
Hast du einen anderen L�sungsvorschlag?
Systeme:
Win XP und Office 2003, jeweils aktueller Stand.
oder Win7 + O2003 oder Win7 + O07
Gr��e
Stefan
> Das funktioniert leider nicht (mehr).
Was heisst "geht nicht mehr"?
- irgendwelche Fehlermeldungen
- was meint der Debugger? (werden die Schleifen durchlaufen)
Thomas Gahler wrote:
> Hallo Stefan
>> Das funktioniert leider nicht (mehr).
> Was heisst "geht nicht mehr"?
> - irgendwelche Fehlermeldungen
> - was meint der Debugger? (werden die Schleifen durchlaufen)
Das Bild wird nicht aktualisiert.
Es gibt keinerlei Fehlermeldungen.
Das Objekt wird angesprochen. Ich kann Eigenschaften, zB Höhe,
auslesen und ändern. Höhe ändern wird sofort ausgeführt.
Im Dezember habe ich viele Dokumente um diese Funktionalität
erweitert und getestet. Damals habe ich die Bilder der Kopf-
und Fußzeile von verlinkt auf eingebettet + verlinkt umgestellt (Da-
mit man auch ohne Serverzugriff das vollständige Layout hat).
Danke für die Unterstützung
Stefan
> Im Dezember habe ich viele Dokumente um diese Funktionalität
> erweitert und getestet. Damals habe ich die Bilder der Kopf-
> und Fußzeile von verlinkt auf eingebettet + verlinkt umgestellt (Da-
> mit man auch ohne Serverzugriff das vollständige Layout hat).
Ist denn dir Originaldatei noch dort wo sie sein muss.
Schau dir mal die Feldfunktion an (Umschalten mit Alt+F9), wohin zeigt der
Pfad
--
Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)
- Windows XP (SP3), Office XP (SP3)
Thomas Gahler schreibselte:
> Hallo Stefan
>> Im Dezember habe ich viele Dokumente um diese Funktionalität
>> erweitert und getestet. Damals habe ich die Bilder der Kopf-
>> und Fußzeile von verlinkt auf eingebettet + verlinkt umgestellt (Da-
>> mit man auch ohne Serverzugriff das vollständige Layout hat).
> Ist denn dir Originaldatei noch dort wo sie sein muss.
> Schau dir mal die Feldfunktion an (Umschalten mit Alt+F9), wohin
> zeigt der Pfad
das funktioniert mit den Bildern nicht.
Wenn ich das Bild markiere und F9 drücke, wird es aktualisiert.
Der Pfad muss also stimmen.
Ich hab jetzt das ganze nochmals durchgespielt.
Das automatische Aktualisieren funktioniert nur, wenn ich das Layout
des Bildes nicht ändere!
Mit der Einstellung "Mit Text in Zeile" bei der Umbruchart wird das
Bild automatisch aktualisiert. Mit anderen Einstellungen leider
nicht mehr.
Das Problem tritt sowohl beim Einbetten mit "IncludePicture" auf,
als auch bei "Einfügen" - "Grafik" - "Aus Datei".
Kannst du das bestätigen?
Gibt es einen Workaround?
Grüße
Stefan
> Ich hab jetzt das ganze nochmals durchgespielt.
> Das automatische Aktualisieren funktioniert nur, wenn ich das Layout
> des Bildes nicht ändere!
> Mit der Einstellung "Mit Text in Zeile" bei der Umbruchart wird das
> Bild automatisch aktualisiert. Mit anderen Einstellungen leider
> nicht mehr.
>
> Das Problem tritt sowohl beim Einbetten mit "IncludePicture" auf,
> als auch bei "Einfügen" - "Grafik" - "Aus Datei".
Ich verstehe nicht ganz bzw. bin nihct ganz sicher was du machst. Du
schreibst bei der Einstellung "Mit Text in Zeile" funktioniert es sonst
nicht.
Bei "Mit Text in Zeile" hast du ein InlineShape (schwarze Ankerpunkte) und
kannst den Pfad mittels Alt+F9 anzeigen lassen. Bei allen anderen
Einstellungen wird deine Grafik in ein Shape (weisse Ankerpunkte)
konvertiert. Und ein Shape kannst du via .Fields.Update nicht ansprechen.
Dann müsstest du duch die .Spapes-Auflistung duch gehen und
- .LinkFormat.Update
aufrufen
Kannst du dir den Pfad mittels Alt+F9 anzeigen lassen?
Welche Farbe haben die Ankerpunkte deiner Grafiken?
Thomas Gahler schreibselte:
> Hallo Stefan
>
>> Ich hab jetzt das ganze nochmals durchgespielt.
>> Das automatische Aktualisieren funktioniert nur, wenn ich das Layout
>> des Bildes nicht ändere!
>> Mit der Einstellung "Mit Text in Zeile" bei der Umbruchart wird das
>> Bild automatisch aktualisiert. Mit anderen Einstellungen leider
>> nicht mehr.
>>
>> Das Problem tritt sowohl beim Einbetten mit "IncludePicture" auf,
>> als auch bei "Einfügen" - "Grafik" - "Aus Datei".
> Ich verstehe nicht ganz bzw. bin nihct ganz sicher was du machst. Du
> schreibst bei der Einstellung "Mit Text in Zeile" funktioniert es
> sonst nicht.
>
> Bei "Mit Text in Zeile" hast du ein InlineShape (schwarze
> Ankerpunkte) und kannst den Pfad mittels Alt+F9 anzeigen lassen.
Richtig. Hier funktioniert die Pfadanzeige.
> Bei allen anderen Einstellungen wird deine Grafik in ein Shape (weisse
> Ankerpunkte) konvertiert. Und ein Shape kannst du via .Fields.Update
> nicht ansprechen.
Richtig. Und hier wird auch der Pfad nicht angezeigt
> Dann müsstest du duch die .Spapes-Auflistung duch gehen und
> - .LinkFormat.Update
> aufrufen
Das ist der entscheidende Hinweis. Ich habe kein InlineShape,
sondern ein Shape. Das bei Word hier unterschieden werden muss,
auf das muss man erst mal kommen.
Hier meine Funktion:
Sub UpdateShapeLinkHeaderFooter()
'================================
' Aktualisieren der Bilder in Kopf- und Fusszeile, die von Word als SHAPE
behandelt werden.
' Codebasis: http://www.chf-online.de/vba/vbaaktualisieren2.htm
' Änderung nach Hinweis von Thomas Gahler in der NG
microsoft.public.de.word.vba
' 27.04.2010, Stefan Wirrer
Dim oDoc As Document
Dim docSec As Section
Dim oHF As HeaderFooter
Dim shp As Shape
Set oDoc = ActiveDocument
For Each docSec In oDoc.Sections
For Each oHF In docSec.Headers
For Each shp In oHF.Shapes
shp.LinkFormat.Update
Next shp
Next oHF
For Each oHF In docSec.Footers
For Each shp In oHF.Shapes
shp.LinkFormat.Update
Next shp
Next oHF
Next docSec
Set oDoc = Nothing
End Sub
Damit funktioniert's jetzt.
Vielen Dank für die Unterstützung.
Stefan