在工作表上有一个表格,我在其中放置了文本框。
现在我想在这些文本框中添加图片。
我使用下面写的代码。但是,虽然图片被写入,但它们被放置在文本框之外。我怎样才能确保它们放在盒子里?
SELECT your_field,ora_rowscn,scn_to_timestamp(ora_rowscn) from your_table WHERE ROWNUM = 1;
答案 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