
Ist es möglich, dieArtikeleines Links in MS Word, der auf eine Excel-Tabelle verweist, pragmatisch durch die Verwendung von VBA?
Ich habe Diskussionen darüber gefunden, wie manÄndern Sie die Dateiquelle, aber nicht dieArtikel, unten imLink bearbeitenMenü aus MS Word 2010:
Die exakt gleiche Frage wurde bereits gestelltHier, aber ohne Antworten, vor etwa 2 Jahren. Ich habe auch in dieLinkFormatDie Eigenschaftendokumentation, die zum Bearbeiten der Quelle eines Links verwendet wird, hat mich jedoch nirgendwohin geführt.
Wir sind für alle Ideen zur Lösung des Problems dankbar.
Hintergrund: Ich habe eine Excel-Tabelle, die ein Word-Dokument mit Daten versorgt. Ich versuche, dieses Dokument als Vorlage zu verwenden, wobei ich je nach Analyse die Tabelle ändern würde, die die Daten in das Word-Dokument einspeist. Die Tabellen in der Tabelle (nicht als solche formatiert) können im Umfang variieren. Sie haben jedoch die gleiche Anzahl von Spalten. Da die Anzahl der Zeilen variiert, müsste ich das Artikelfeld entsprechend ändern.
Bearbeiten
Ich habe 2 Beispieldateien als MWE des Problems bereitgestellt. Sie finden sie unterHier.
Antwort1
Ich habe einen Workaround dafür gefunden. Anstatt dieItenshabe ich ein VBA-Skript erstellt, um alle verknüpften Bereiche zu benennen. Anstatt also das Linkelement in Word zu ändern, ändere ich den benannten Bereichswert in Excel. Das Linkelement bleibt gleich, aber es verweist auf einen Bereich, der pragmatisch geändert werden kann. Hier ist der Code, den ich zusammengestellt habe, um Bereichen Namen zu geben:
Sub CreateNamedRanges()
Dim i As Integer
For i = 1 To Worksheets.Count
sheetName = "Mysheet" & i
varName = "Myvar" & CStr(i)
Set Rng = Sheets(sheetName).Range("G6:I9")
ActiveWorkbook.Names.Add Name:=varName, RefersTo:=Rng
Next i
End Sub
Der Nachteil dieses Ansatzes ist, dass ich alle Verbindungen, die ich zuvor hergestellt hatte, manuell neu erstellen musste (Link). Um die Dateiquelle zu ändern, habe ich den Code im Fragelink verwendet. Der Vollständigkeit halber schreibe ich ihn hier:
Sub changeSource()
Dim dlgSelectFile As FileDialog 'FileDialog object
Dim thisField As Field
Dim selectedFile As Variant 'must be Variant to contain filepath of selected item
Dim newFile As Variant
Dim fieldCount As Integer
'create FileDialog object as File Picker dialog box
Set dlgSelectFile = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
With dlgSelectFile
'use Show method to display File Picker dialog box and return user's action
If .Show = -1 Then
'step through each string in the FileDialogSelectedItems collection
For Each selectedFile In .SelectedItems
newFile = selectedFile 'gets new filepath
Next selectedFile
Else 'user clicked cancel
End If
End With
Set dlgSelectFile = Nothing
'update fields
fieldCount = ActiveDocument.Fields.Count
For x = 1 To fieldCount
ActiveDocument.Fields(x).LinkFormat.SourceFullName = newFile
Next x
End Sub
Und zum Schluss noch eine Aktualisierung aller Links auf einmal:
Sub AutoOpen()
ActiveDocument.Fields.Update
End Sub