问题是,我正在创建一个新的形状图片来替换以前的图片。 但是,即使新形状属性“上”和“左”与上一张图片完全一样,新形状也会错位。这发生在标题形状上。 我相信我无法在VBA手表上找到某种隐藏属性。
我正在添加以下代码(简化版):
GridSearchCV
voilá,它创建了对象shp2,删除了shp2del ..,这是一个小问题,在某些文档中,它并没有定位。
我尝试了很多事情,在创建后重新定义了shp2.top和shp2.left, 寻找相对位置属性,锚对象属性,与要删除的形状和新形状进行比较,除非我(最有可能)缺少一个属性,否则一切似乎都是相同的。
我还尝试创建一个宏,并查看将新形状更改为位置的代码,但是不幸的是,创建宏字时并不能很好地处理图片。
我发现的唯一提示是这个,但是要以编程方式更改它,我不知道如何。
在m4o_tim回答后,单词显示的选项更加准确,但最终文档上的距离仍然不正确
我也对锁定锚感到好奇,并允许重叠,但这肯定隐藏在shp2.anchor中,我会尝试一下。
关于绝对位置,我找不到可以设置的属性。 感谢您的帮助m4o_tim,还有其他人可以帮助您吗?
更新2: 最后,它的工作原理基本上是在设置后重新定义顶部和左侧位置
For i = ActiveDocument.Sections(1).Headers(1).Shapes.count To 1 Step -1
'shape to delete:
set shp2del = ActiveDocument.Sections(1).Headers(1).Shapes(i)
'shape to add
Set shp2 = ActiveDocument.Sections(1).Headers(1).Shapes.AddPicture(replace_path, False, True, shp2del.Left, shp2del.Top, shp2del.width, shp2del.height)
shp2del.delete
next i
此后,它运行良好。谢谢m4o_tim
更新3: 我很幸运地意识到这一点只适用于一个部分。原因是锚位置。
如果我比较 shp2del.Anchor.Information(wdVerticalPositionRelativeToPage) 与 shp2.Anchor.Information(wdVerticalPositionRelativeToPage)
我会得到不同的值。我将对此提出一个新问题。谢谢大家。
答案 0 :(得分:2)
添加新形状时,您没有指定相对位置,因此Word会相对于列和段落应用其默认位置。
当您发现对象模型中不熟悉的内容时,请尝试使用对象浏览器和联机帮助文档。
您的代码应如下所示:
编辑:旧图片中包含的设置锚点
'shape to add
Set shp2 = ActiveDocument.Sections(1).Headers(1).Shapes.AddPicture(replace_path, False, True, , , shp2del.width, shp2del.height, shp2del.Anchor)
With shp2
.WrapFormat.Type = shp2del.WrapFormat.Type
.RelativeHorizontalPosition = shp2del.RelativeHorizontalPosition
.Left = shp2del.Left
.RelativeVerticalPosition = shp2del.RelativeVerticalPosition
.Top = shp2del.Top
End With