Используйте Excel-VBA для создания и вставки табличной ячейки документа Word в виде строки / текста и изображения - PullRequest
0 голосов
/ 21 мая 2019

Я пытался еще несколько дней создать документ Word с Excel-VBA

Шаг за шагом: первое: создайте Word-Document и добавьте Таблицу (Mailing-Label) Второе: заполните текст в некоторых ячейках. Прекрасно работает!

Теперь моя проблема: наконец, я хочу добавить изображение в ячейку. Моя проблема в том, что изображение ДИАПАЗОН очищает старый текст. И я не знаю, как установить изображение и текст в конце цикла.

Мой код

oDoc.Tables(1).Cell(zeile, spalte).Range.Text = "some string"
oDoc.Tables(1).Cell(zeile, spalte).Range.InlineShapes.AddPicture path_to_image

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Чтобы понять, что происходит, нужно подумать о том, как это будет работать, если вы будете делать это вручную, работая с выбором.Когда вы присваиваете текст Range, это все равно, что вводить его, как и следовало ожидать.Вторая строка кода, вставка изображения, подобна выделению всей ячейки (в данном случае) и вставке изображения: она заменяет то, что находится в диапазоне.При работе вручную, если вы выбрали всю ячейку, вы нажимаете стрелку вправо или нажимаете в конце, чтобы поместить фокус после того, что было напечатано.

Тот же принцип применяется, когдаиспользуя объект Range: ему нужно свернуть , чтобы что-то добавить к нему.

Следующий пример кода демонстрирует это.В нем также показано, как сделать код более эффективным, назначив объектам таблицу и целевой диапазон.

Dim tbl As Word.Table 'or As Object if using late-binding
Dim rng As Word.Range 'or As Object if using late-binding
Dim chrCount As Long

Set tbl = oDoc.Tables(1)
Set rng = tbl.Cell(zeile, spalte).Range
rng.Text = "test"
chrCount = rng.Characters.Count
'Get the end of the cell content
Set rng = rng.Characters(chrCount - 1)
rng.Collapse wdCollapseEnd
rng.InlineShapes.AddPicture path_to_image
0 голосов
/ 21 мая 2019

Может быть что-то вроде

Sub Test()
Dim Wrd As Word.Application
Dim oDoc As Word.Document

Set Wrd = CreateObject("Word.Application")
Wrd.Visible = True
Set oDoc = Wrd.Documents.Add
oDoc.Tables.Add oDoc.Range, 3, 3

zeile = 2
spalte = 2
path_to_image = "C:\Users\user\Desktop\Pull2.jpg"

oDoc.Tables(1).Cell(zeile, spalte).Range.Select

    With Wrd.Selection
    .TypeText Text:="some string"
    .InlineShapes.AddPicture path_to_image
    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...