Excel Link in Word mittels VBA ändern
Hallo Leute,
ich habe eine Word-Datei, welches Text aus einer Excel-Tabelle enthält. Dieser Text ist mittels "LINK Excel.Sheet.12" eingebunden.
Nun möchte ich aber, dass die User den Link einfach ändern können.
Ich habe dazu nun ein Formular erstellt, wo der Benutzer aus einer ComboBox eine Datei auswählen kann.
Mittels "Selection.Find" lasse ich dann den Link ändern.
So weit, so gut.
Das Problem ist aber, sobald ich das Formular schließe, wird der neu erstellte Link durch den Alten wieder überschrieben.
Und nein: es ist nicht der Programm-Code. Dies dürfte durch Word selbstständig wieder geschehen.
Denn wenn ich einen "normalen" Text mittels "Selection.Find" ersetzte, bleibt der neue Text auch nach dem Schließen des Formulars noch vorhanden.
Diese Problematik betrifft also nur Links.
Meine Frage an euch:
Wie kann ich dieses Problem lösen?
Gibt es andere Möglichkeiten als "Selection.Find", um einen Link zu ändern?
Bin für jede Hilfe dankbar.
Danke
Patrick
ich habe eine Word-Datei, welches Text aus einer Excel-Tabelle enthält. Dieser Text ist mittels "LINK Excel.Sheet.12" eingebunden.
Nun möchte ich aber, dass die User den Link einfach ändern können.
Ich habe dazu nun ein Formular erstellt, wo der Benutzer aus einer ComboBox eine Datei auswählen kann.
Mittels "Selection.Find" lasse ich dann den Link ändern.
So weit, so gut.
Das Problem ist aber, sobald ich das Formular schließe, wird der neu erstellte Link durch den Alten wieder überschrieben.
Und nein: es ist nicht der Programm-Code. Dies dürfte durch Word selbstständig wieder geschehen.
Denn wenn ich einen "normalen" Text mittels "Selection.Find" ersetzte, bleibt der neue Text auch nach dem Schließen des Formulars noch vorhanden.
Diese Problematik betrifft also nur Links.
Meine Frage an euch:
Wie kann ich dieses Problem lösen?
Gibt es andere Möglichkeiten als "Selection.Find", um einen Link zu ändern?
Bin für jede Hilfe dankbar.
Danke
Patrick
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 271811
Url: https://administrator.de/forum/excel-link-in-word-mittels-vba-aendern-271811.html
Ausgedruckt am: 15.01.2025 um 12:01 Uhr
10 Kommentare
Neuester Kommentar
Gibt es andere Möglichkeiten als "Selection.Find", um einen Link zu ändern?
Jup,Sub ChangeLink()
Dim f As Field, strPath As String
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogOpen)
With dlg
.Filters.Clear
.Filters.Add "Excel-Dateien", "*.xlsx", 1
.FilterIndex = 1
If .Show = -1 Then
strPath = .SelectedItems(1)
End If
End With
If strPath <> "" Then
With ThisDocument
For Each f In .Fields
If f.Type = wdFieldLink Then
f.LinkFormat.SourceFullName = strPath
f.Update
f.LinkFormat.AutoUpdate = False
Exit For
End If
Next
End With
End If
End Sub
Gibt hierfür eine Erklärung bzw. vlt. sogar eine Lösung?
Kannst du mir mal meine Glaskugel polieren ?!Ohne deinen Formular-Code zu kennen... du weist schon ...
Kann ich hier nicht nachvollziehen, Leg mal ein neues Dokument an.
Hab den Code oben mal angepasst, damit sollte es jetzt laufen.
Da muss man wieder etwas basteln
Dim f As Field, strPath As String
Dim dlg As FileDialog
Set dlg = Application.FileDialog(msoFileDialogOpen)
Set regex = CreateObject("vbscript.regexp")
regex.Global = False: regex.IgnoreCase = True
regex.Pattern = "(""[^""]+""\s*)(""[^""]*"")"
With dlg
.Filters.Clear
.Filters.Add "Excel-Dateien", "*.xlsx", 1
.FilterIndex = 1
If .Show = -1 Then
strPath = .SelectedItems(1)
End If
End With
If strPath <> "" Then
With ThisDocument
For Each f In .Fields
If f.Type = wdFieldLink Then
f.LinkFormat.SourceFullName = strPath
f.Code.Text = regex.Replace(f.Code.Text, "$1""Tabelle1!Z1S99""")
f.Update
Exit For
End If
Next
End With
End If