2

Можно ли прагматично изменить элемент ссылки в MS Word, ссылаясь на электронную таблицу Excel, с помощью VBA?

Я нашел обсуждения того, как можно изменить источник файла, но не « Элемент», показанный ниже в меню ссылок редактирования из MS Word 2010:

Редактировать вкладку ссылки

Точно такой же вопрос уже задавался здесь, но без каких-либо ответов, около 2 лет назад. Я также изучил документацию по свойствам LinkFormat, которая используется для редактирования источника ссылки, но ни к чему не привела.

Любые идеи о том, как решить проблему, приветствуются.

Предыстория: у меня есть таблица Excel, снабжающая текстовый документ данными. Я пытаюсь использовать этот документ в качестве шаблона, где в зависимости от анализа я бы изменил электронную таблицу, подающую данные в текстовый документ. Таблицы в электронной таблице (не отформатированные как таковые) могут варьироваться по диапазону. Тем не менее, они имеют одинаковое количество столбцов. Так как количество строк варьируется, я должен изменить поле Item соответственно.

редактировать

Я предоставил 2 образца файлов в качестве MWE проблемы. Их можно найти здесь.

1 ответ1

1

Я нашел работу вокруг этого. Вместо того, чтобы менять Itens, я создал VBA-скрипт для именования всех связанных диапазонов. Поэтому вместо изменения элемента ссылки в Word я изменяю значение именованного диапазона в Excel. Элемент ссылки остается прежним, но он указывает на диапазон, который можно прагматически изменить. Вот код, который я собрал, чтобы поместить имена в диапазоны:

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

Недостатком этого подхода является то, что мне пришлось заново создавать (связывать) все соединения, которые я делал ранее. Для изменения файла Source я использовал код в ссылке на вопрос. Для завершения я пишу это здесь:

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

Наконец, чтобы обновить все ссылки сразу:

Sub AutoOpen()
    ActiveDocument.Fields.Update
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .