【发布时间】:2016-01-28 19:44:58
【问题描述】:
我有一个问题,我似乎无法解决问题。我正在尝试使用 Word 文档中的形状(图像)填充用户窗体。我使用此代码来执行此操作:
iShapeCount = wrdDoc.Shapes.Count
i = 0
If iShapeCount > 0 Then
ReDim oPic(iShapeCount - 1) As IPictureDisp
For Each wrdShape In wrdDoc.Shapes
With wrdShape
wrdDoc.Activate
.Select
wrdAppMain.ActiveDocument.ActiveWindow.Selection.Copy
Set oPic(i) = PastePicture(lPicType)
End With
i = i + 1
Next wrdShape
End If
oPic 是一维图片数组,PastePicture 是子例程,用于将复制的图像从剪贴板中取出并作为图像文件放入数组中。
到目前为止一切顺利。
这完全按照它应该的方式工作,但是一旦 Word 文档中存在两个以上的形状(图像),复制命令就会像魅力一样复制前两个,但所有其他的(尽管选择正确) 将不会被 Copy-Command 复制,字面意思是 NOTHING。
另一件有趣的事情:如果我省略了wrdAppMain.ActiveDocument.ActiveWindow.Selection.Copy-thingy 并手动 Ctrl-C 程序选择的形状,因为它通过循环,无论 Word 文档中有多少形状,它都可以工作。
所以你看:我已经走到了尽头。请帮忙:)
提前谢谢你!
【问题讨论】:
-
你试过一步步调试吗?如果是,则重做,每次跳转到 if 语句时控制 i 的值(调试时用鼠标移动 i)。你得到了什么结果?
-
嗨卡塔拉! i 按预期从 0 变为 6(在这种情况下为 7 个图像)。问题是,当它到达三个时,Selection.Copy-Command 不会复制,所以 PastePicture-Subroutine 用空填充数组的其余部分。
-
为什么不尝试直接复制形状?