У меня есть текстовый документ, содержащий несколько последовательных меток (на данный момент элементы управления ActiveX открыты для предложений, см. Изображение ниже), помечены как label1, label2 и т. Д.
Я хочу использовать VBA для подписи этих меток, используя данные из Excel.
До сих пор я основывал свой подход на этой статье, но хочу добавить цикл для заголовка каждой метки (у меня около 40) без 40 строк кода.
https://www.makeuseof.com/tag/integrate-excel-data-word-document/
Причина, по которой я использую элементы управления ActiveX, заключается в том, что руководство предложило это. Так как они называются «наследие», я полагаю, есть лучшие альтернативы.
Это мой текущий код:
Private Sub LoadText1_Click()
Dim objExcel As New Excel.Application
Dim exWb As Excel.Workbook
Dim cnt As Integer
Set exWb = objExcel.Workbooks.Open("D:\...\content.xlsx")
For cnt = 1 To 40
ThisDocument.ContentControls("label" & cnt).Caption = exWb.Sheets("Sheet1").Cells(cnt, 1)
'Alternative methods tried:
ThisDocument.OLEObjects("label" & cnt).Object.Caption = exWb.Sheets("Sheet1").Cells(cnt, 1)
ThisDocument.Controls("label" & cnt).Caption = exWb.Sheets("Sheet1").Cells(cnt, 1)
ThisDocument.Shapes("label" & cnt).OLEFormat.Caption = exWb.Sheets("Sheet1").Cells(cnt, 1)
Next cnt
exWb.Close
Set exWb = Nothing
End Sub
Большую часть времени я получаю следующую ошибку:
Я попробовал это, но это не сработало.
VBA: Как перебирать метки (не в пользовательской форме)?
метка VBA ActiveX на листе