首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用VB6将非内联图片插入word文档?

如何使用VB6将非内联图片插入word文档?
EN

Stack Overflow用户
提问于 2018-07-20 22:34:43
回答 2查看 1.2K关注 0票数 0

我试图使用VB^中包含的Microsoft 15.0对象库将图像插入到word文档中,我看到插入图形文件的唯一方法是这样做:

代码语言:javascript
复制
oDoc.Range.InlineShapes.AddPicture ("C:\Users\name\Desktop\file.jpg")

但是,我想要一张可以放在文本上的图片,以及我想要它在文档中的位置.是否有任何使用VB6代码的方法来做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-21 04:40:07

Word有两种不同的方法来管理图像和其他嵌入式对象:InlineShapesShapes。前者与文本流中的字符相同;后者在与文本不同的层中具有文本包装、穿孔和“活动”。

将图形文件作为Shape插入

代码语言:javascript
复制
Dim shp as Word.Shape
Set shp = oDoc.Shapes.AddPicture(FileName, LinkToFile, _
          SaveWithDocument, Left, Top, Width, Height, Anchor)

AddPicture方法返回一个Shape对象。通常,在插入对象之后需要设置其他属性时,这是非常有用的。例如,为了指定文本包装格式。如果不需要Shape对象,则可以插入Shape,而无需为对象赋值。在这种情况下,省略括号:

代码语言:javascript
复制
oDoc.Shapes.AddPicture FileName, LinkToFile, _
          SaveWithDocument, Left, Top, Width, Height, Anchor

虽然只需要FileName参数,但如果要控制图像插入时的位置,则最后一个参数-- Anchor --非常重要。

还可以以InlineShape的形式插入,然后使用ConvertToShape,以便有一个可以应用文本包装格式的Shape对象。

每个Shape必须与文档中的一个范围相关联。除非另有规定,这将是当前选择的段落的第一个字符。为此,我强烈建议将Range传递给Anchor参数中的Shapes.AddPicture方法。

注意,一旦插入了Shape,就无法直接更改anchor位置。它可以通过剪切和粘贴来完成。另一种可能是使用ConvertToInlineShape方法,以便您可以使用Range移动图形,然后使用ConvertToShape将其转换回Shape,但在这种情况下,可能需要重置许多定位和包装属性。这里是一个使用“转换”方法的示例:

代码语言:javascript
复制
Sub MoveShapeToOtherRange()
    Dim oDoc As Word.Document
    Dim shp As Word.Shape
    Dim ils As Word.InlineShape
    Dim rngEnd As Word.Range, rngStart As Word.Range

    Set oDoc = ActiveDocument
    Set rngStart = oDoc.content
    rngStart.Collapse wdCollapseStart 'start of document
    Set rngEnd = Selection.Range

    Set shp = oDoc.shapes.AddPicture(fileName:="C:\Test\icons\Addin_Icon16x16.png", _
              Top:=0, Left:=10, anchor:=rngStart)

    Set ils = shp.ConvertToInlineShape
    Set rngStart = ils.Range
    rngEnd.FormattedText = rngStart.FormattedText
    rngStart.Delete
    Set ils = oDoc.InlineShapes(1)
    Set shp = ils.ConvertToShape
End Sub

默认情况下,Shape将在激活MoveWithText的情况下插入。这意味着页面上的位置没有设置,编辑将影响垂直位置。例如,如果希望Shape始终以页面为中心,则将其设置为false。但是,请注意,如果锚点移动到另一个页面,Shape也将移动到该页面。

有时,LeftTop参数在添加Shape时不会“接受”--添加之后可能需要将它们再次设置为属性。

票数 1
EN

Stack Overflow用户

发布于 2018-07-21 15:43:49

好吧,我最后做的是这样的:

代码语言:javascript
复制
Dim a As Object
On Error Resume Next
a = oDoc.Shapes.AddPicture("C:\Users\name\Desktop\file.jpg", , , 25, 25, 25, 25)

由于某种原因,这将图像放置在位置和大小。当我查看文档中的".AddPicture“时,我意识到它返回了一个Shapes对象。所以我就把它放在一个扔掉的东西里。由于某种原因,它会以错误来响应,但最终会被放置在文档上。所以我用:

On Error Resume Next

这就跳过了错误。在此之后,图片按预期放置,其余文档按预期绘制。

谢谢你的回答

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51451179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档