将图片添加到文本框

时间:2016-02-01 13:12:43

标签: image vba ms-word word-vba

在工作表上有一个表格,我在其中放置了文本框。

现在我想在这些文本框中添加图片。

  

我使用下面写的代码。但是,虽然图片被写入,但它们被放置在文本框之外。我怎样才能确保它们放在盒子里?

SELECT your_field,ora_rowscn,scn_to_timestamp(ora_rowscn) from your_table WHERE ROWNUM = 1;

2 个答案:

答案 0 :(得分:0)

通过文档主体中的Shapes集合的循环似乎应该访问文本框并插入InlineShapes。图片不会在您预期的位置结束的原因是因为您没有为Range的{​​{1}}参数提供任何内容。所以Word只是猜测插入它的位置......

为了控制图片的插入位置,您需要在目标文本框中指定范围。 TextBox具有TextFrame.TextRange属性,其中TextRange是文本框的完整内容。从这里,您可以将其缩小到特定的段落或类似的东西。例如:

InlineShapes.AddPicture

除此之外,很难确切地确定您对代码的期望。我担心您为文本框循环Shapes集合,但没有检查Shape.Type是否真的Dim rng as Word.Range Set rng = tekstvak.TextFrame.TextRange.Paragraphs(1).Range ActiveDocument.InlineShapes.AddPicture FileName:=Bestandsnamen(i), _ LinkToFile:=False, SaveWithDocument:=True, Range:=rng

此外,由于tekstvak是一个TextBox对象,我认为你不需要msoTextBox,因为你已经拥有了一个文本框对象。如果是这种情况,那么您可以执行此操作,而不是:Set shp = Word.Selection.ShapeRange(1)

答案 1 :(得分:0)

感谢您的反应。如果我按照您的说明操作,则会出现类型不匹配错误。但我确定tekstvak是一个文本框,因为如果我做msgbox tekstvak.Type它会给我17,这是一个文本框。

For Each tekstvak In ActiveDocument.Shapes
   If tekstvak.Height > 20 Then
        tekstvak.Select

        If Bestandsnamen(i) <> "" Then
            Dim rng As Word.Range
            Set rgn = tekstvak.TextFrame.TextRange.Paragraphs(1).Range
            ActiveDocument.InlineShapes.AddPicture FileName:=Bestandsnamen(i), LinkToFile:=False, SaveWithDocument:=True, Range:=rng
        End If
        i = i + 1
    End If
Next