几天以来,我一直试图用Excel-VBA创建Word文档
逐步: 首先:创建Word文档并添加表格(Mailing-Label) 第二:将文本填充到某些单元格中。很棒!
现在我的问题是: 最后,我想在单元格中添加图片。 我的问题是,图像范围清除了旧文本。 而且我不知道如何在循环末尾设置图像和文本。
我的代码
oDoc.Tables(1).Cell(zeile, spalte).Range.Text = "some string"
oDoc.Tables(1).Cell(zeile, spalte).Range.InlineShapes.AddPicture path_to_image
答案 0 :(得分:1)
了解正在发生的事情的方法是思考如果您手动进行选择并选择某个选项,它将如何工作。正如您期望的那样,将文本分配给Range
时就像输入文本一样。第二行代码,插入图像,就像选择整个单元格(在这种情况下)然后插入图像:它替换了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
答案 1 :(得分:0)
可能类似于
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