Moin,
ich habe eine Word Datei, welche an mehreren Stellen
verknüpfte Excel-Tabellen enthält. Sämtliche Original-Tabellen
befinden sich in derselben Excel-Datei und werden dort
bearbeitet. Wenn die Excel-Datei unter einem neuen Dateinamen
gespeichert wird, muss für sämtliche Verknüpfungen in Word die
Quellenangabe korrigiert werden.
Gibt es eine Möglichkeit, vermutlich als Makro, bei der
zunächst der Namer/Pfad der neuen Quelldatei erfragt wird und
dieser anschließend für alle im Word-Dokument vorhandenen
Verknüpfungen übernommen wird?
Besten Dank im Voraus!
Hallo McLeod,
das geht relativ einfach sowohl manuel als auch per Makro. Die Tastenkombis gelten für Word97.
1. Cursor am Dokument-Anfang positionieren
2. Feldfunktionen im gesamten Dokument anzeigen (+)
3. Mit Suchen und Ersetzen den alten EXCEL-Dateinamen durch den neuen ersetzen.
bei Pfadangabe beachten, dass jeweils '\\' die Verzeichnisse trennen
4. Feldfunktionen im gesamten Dokument ausblenden (+)
5. Alles markieren (+A)
6. Felder aktualisieren ()
Per Makro sieht das ganze dann so aus:
Sub Verknuepfungaendern()
'
' Feldfunktionen anzeigen
Selection.HomeKey Unit:=wdStory
ActiveWindow.View.ShowFieldCodes = True
' Eingabe Alter EXCEL-Dateiname
Text1 = "Wenn Pfad der neuen Datei anders, dann auch Pfad/Teilpfad mit angeben im Format"
Text2 = "C:\\Eigene Dateien\\DatenDatei.XLS"
BoxTitel = "EXCEL-Verknüpfung ändern"
BoxPrompt = "Dateiname-Alt? " & Chr$(10)
BoxPrompt = BoxPrompt & Text1 & Chr$(10) & Text2 & Chr$(10)
BoxVorgabe = "WWW\_EXCEL\_VERKNUEPFUNGEN2"
DateiAlt = InputBox(BoxPrompt, BoxTitel, BoxVorgabe)
' Eingabe neuer EXCEL-Dateiname
BoxPrompt = "Dateiname-Neu? " & Chr$(10)
BoxPrompt = BoxPrompt & Text1 & Chr$(10) & Text2 & Chr$(10)
DateiNeu = InputBox(BoxPrompt, BoxTitel, DateiAlt)
' Suchen und Ersetzen der Dateinamen in den Verknüpfungen
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = DateiAlt
.Replacement.Text = DateiNeu
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
' Feldfunktionen ausblenden
ActiveWindow.View.ShowFieldCodes = False
' Felder aktualiseren
Selection.WholeStory
Selection.Fields.Update
Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub
Gruß
Franz