一个看似简单但不能完全按照我想要的方式工作的vba脚本。 我的脚本在当前文档中插入图像(PNG文件),并在每张图片作为文件名后添加标题。
所以要插入我使用的图像:
Selection.InlineShapes.AddPicture FileName: = sFile
Selection.TypeParagraph
使用后插入文字:
Set Opar = ActiveDocument.Paragraphs.Add
oPar.Range.Text = sFile
oPar.Range.Style = " Normal"
问题是图像都在文档的开头找到,按相反的顺序排列(插入的最后一张图像首先出现在文档中),图例的末尾都有图例。
发生了什么事?
答案 0 :(得分:1)
@Boro:直接使用对象模型比尝试强制选择(模仿用户操作)更有效。没有任何一种方法可以实现您所描述的内容,因此我将展示我的偏好:
Dim ils as Word.InlineShape
Dim rng as Word.Range
'Starting with current sel, but this could also be a Range...
Set ils = Selection.InlineShapes.AddPicture(FileName: = sFile)
Set rng = ils.Range
'Move the focus AFTER the picture
rng.Collapse wdCollapseEnd
'new para, text, followed by new para
rng.Text = vbCr & sFile & vbCr
rng.Style = wdStyleNormal
'focus in last para inserted by code
rng.Collapse wdCollapseEnd
'Do other things with the Range...
'Leave cursor there for user to work
rng.Select
我的方法中的关键是将范围折叠,无论是开始还是结束点。可以想象它是按左箭头键或右箭头键将选择减少到闪烁的光标。除了你可以有任意数量的范围(但只有一个选择),并且屏幕上的东西不会跳转。