Если вы хотите использовать тот же метод, который вы обнаружили для копирования одной ячейки в несколько ячеек, это также должно работать.Однако это немного сложно, и вы не предоставляете нам достаточно информации для воспроизведения TextBox, поэтому вам может понадобиться настроить следующее.
Я поместил текстовое поле ActiveX на поверхность документа и поднял его.используя коллекцию InlineShapes
.Если вы используете пользовательскую форму, вам нужно изменить эту часть.
Невозможно назначить Column
в Word для объекта Range
.Range
должен быть непрерывным потоком текста.В Word непрерывный поток является горизонтальным, а затем вертикальным, поэтому Rows
можно присвоить Range
, но не столбцу.(И именно поэтому другой Ответ зацикливает ячейки в столбце, что сравнительно медленно.)
Однако возможно выбрать столбец и работать с Selection
,Поэтому приведенный ниже код копирует содержимое текстового поля в буфер обмена, затем выбирает весь столбец и вставляет в Selection
.
Sub CopyToMultipleCells()
Dim tl As Integer
Dim doc As word.Document
Dim tb As MSForms.TextBox
tl = 1
'**************
Dim tbl1 As Table
Dim rng As Range
Set doc = ActiveDocument
'Change if on a UserForm
Set tb = doc.InlineShapes(1).OleFormat.Object
'Select the text box content, then copy it
tb.SelStart = 0
tb.SelLength = tb.TextLength
tb.Copy
Set tbl1 = ActiveDocument.Tables(tl)
tbl1.Columns(5).Select
Selection.Paste
End Sub