使集合项显示在word VBA中

使集合项显示在word VBA中,vba,collections,ms-word,Vba,Collections,Ms Word,我在MS Word VBA中创建了一个大宏,它在许多表和内联形状中循环,并在复制粘贴的帮助下,在一些操作后重新排列它们。当超过50-60个表格和形状时,宏需要60秒才能完成,我会随机崩溃(大约10-20%的时间),我怀疑这是由于剪贴板过载问题和过度使用“选择”造成的。有人建议我只使用集合来存储形状和表格(这很有效)并改进代码,我目前正在尝试这样做,但我找不到让集合项显示在Word中的方法或方式 我要求的是类似collect(1).Show的方法,它可以在当前选定的段落上工作,或者至少是colle

我在MS Word VBA中创建了一个大宏,它在许多表和内联形状中循环,并在复制粘贴的帮助下,在一些操作后重新排列它们。当超过50-60个表格和形状时,宏需要60秒才能完成,我会随机崩溃(大约10-20%的时间),我怀疑这是由于剪贴板过载问题和过度使用“选择”造成的。有人建议我只使用集合来存储形状和表格(这很有效)并改进代码,我目前正在尝试这样做,但我找不到让集合项显示在Word中的方法或方式


我要求的是类似collect(1).Show的方法,它可以在当前选定的段落上工作,或者至少是collect(1).PlaceIt(there)方法,我可以输入我希望形状或表格出现的段落的坐标。

我找到了问题的答案。它适用于任何集合,例如tables/inlineshapes,甚至我的自定义集合

Selection.Range.FormattedText = ActiveDocument.InlineShapes(1).Range.FormattedText
例如,它可以与段落一起使用,而不是选择

Parahraphs(1).Range.FormattedText = ActiveDocument.Tables(1).Range.FormattedText

它使集合中的对象显示在所需位置(作为副本,不删除原始对象)。这种方法比复制和粘贴要快得多。我的脚本现在大约快了4倍(约62秒->17秒,约60个表和60个内联形状),当我使用太多的表/图表时,我不会出现随机剪贴板错误。

不清楚你在问什么。你能提供一个例子来说明这个问题吗?不是完整的项目,请用大量的代码。