在首页标题中插入图片,并在VBA中定义其位置

时间:2019-06-10 11:51:25

标签: vba ms-word

我正在尝试通过VBA在文档的首页标题中插入图片。

有很多行可以做到这一点,但是每行都有问题,我将列出:

这是我最喜欢的方法,但是它不会将图像插入到首页的标题中,而是插入所有剩余的图像,并且也不允许我设置位置:

ActiveDocument.Sections(1).Headers(2).Shapes.AddPicture ("C:\1.jpg")

这将返回超出范围的错误:

Set shpCanvas=ActiveDocument.Shapes.AddCanvas(Left:=0, Top:=0, Width:=180, Height:=50)

shpCanvas.CanvasItems.AddPicture FileName:="C:\1.jpg", LinkToFile:=False, SaveWithDocument:=True

直接插入图像,但通常位置不正确,停留在标题的中间,我希望将其放在左侧

ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range.InlineShapes.AddPicture ("C:\1.jpg")

我只是VBA和文字方面的初学者,对于可能出现的任何怪异想法,我深表歉意

2 个答案:

答案 0 :(得分:1)

第一个代码示例确实对我有用-我在第一页上看到了图片。但是,由于您没有描述文档的结构,因此我可能没有测试您使用的文档...

您不应尝试使用画布。

ShapeInlineShape之间的区别在于Word将其当作文本字符来处理。如果第三行将图片定位在该行的中间,则该段落的格式可能设置为“居中”,而不是“左”。尝试更改段落格式。

要在使用Shape时定位结果,需要一个对象变量才能处理已插入的内容。例如:

Dim shp As Word.Shape, ils As Word.InlineShape

Set shp = ActiveDocument.Sections(1).Headers(2).Shapes.AddPicture("C:\1.jpg")
shp.Top = 0
shp.Left = 0

声明一个对象,然后一步将插入的图片分配给该对象。随后,对象变量可用于对图片进行寻址。

答案 1 :(得分:0)

感谢您的帮助,更准确地说,它是这样工作的

Dim shp2 As Word.Shape
Dim shp3 As Word.InlineShape

Set shp3 = ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage).Range.InlineShapes.AddPicture("C:\1.jpg")
                            Set shp2 = shp3.ConvertToShape
                            shp2.Top = 0
                            shp2.Left = 0