Image 向文本框添加图片

Image 向文本框添加图片,image,vba,ms-word,Image,Vba,Ms Word,在工作表上有一个表格,我在其中放置了文本框 现在我想在这些文本框中添加图片 我使用下面写的代码。但是,尽管图片被写入,但它们被放在文本框之外。我如何确保它们放在盒子里 Sub-AfbeeldingenLaden() 暗淡的塔克斯瓦克形状 Dim Bestandsnamen()作为字符串 作为整数的Dim i Bestandsnamen=AfbeeldingenKiezen() 对于ActiveDocument.Shapes中的每个tekstvak 如果tekstvak.高度>20,则 特克斯塔克

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

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

我使用下面写的代码。但是,尽管图片被写入,但它们被放在文本框之外。我如何确保它们放在盒子里

Sub-AfbeeldingenLaden()
暗淡的塔克斯瓦克形状
Dim Bestandsnamen()作为字符串
作为整数的Dim i
Bestandsnamen=AfbeeldingenKiezen()
对于ActiveDocument.Shapes中的每个tekstvak
如果tekstvak.高度>20,则
特克斯塔克。选择
如果Bestandsnamen(i)“,那么
Selection.InlineShapes.AddPicture文件名:=BestAndsName(i),LinkToFile:=False,SaveWithDocument:=True
如果结束
设置shp=Word.Selection.ShapeRange(1)
shp.LockAspectRatio=错误
shp.宽度=208.35
i=i+1
如果结束
下一个
端接头

在文档主体中,通过Shapes集合的循环似乎应该访问文本框并插入InlineShapes。图片没有达到预期效果的原因是,您没有为
InlineShapes.AddPicture
范围
参数提供任何内容。所以Word只是猜测在哪里插入它

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

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
除此之外,很难确切地确定您对代码的期望。我担心您正在循环文本框的形状集合,但没有检查形状。请键入它是否真的是
msoTextBox


另外,由于tekstvak是一个TextBox对象,我认为您不需要
Set shp=Word.Selection.shaperage(1)
,因为您已经有了一个TextBox对象。如果是这样的话,那么您可以这样做:谢谢您的反应。如果我按照您的指示操作,就会出现类型不匹配错误。但我确信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
用于ActiveDocument.Shapes中的每个tekstvak
如果tekstvak.高度>20,则
特克斯塔克。选择
如果Bestandsnamen(i)“,那么
作为单词范围的Dim rng
设置rgn=tekstvak.TextFrame.TextRange.段落(1).Range
ActiveDocument.InlineShapes.AddPicture文件名:=BestAndsName(i),LinkToFile:=False,SaveWithDocument:=True,范围:=rng
如果结束
i=i+1
如果结束
下一个

@Rohan:请随时查看标签。改进它。。。
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