[最近有一个类似标题的问题尚未得到令人满意的回答,并没有给我任何见解:-(]
这是我第一次尝试将一个Word自动化与Excel VBA集成,因此我开始在Word VBA中进行宏录制以获得线索。不幸的是,当我尝试将其转换为Excel时,即使允许使用Excel本地 wrdDoc 来限定引用,在Word VBA中工作的代码也无法在Excel VBA中运行。非常令人沮丧。
以下是我开始使用的Word中记录的代码段: [记录后手动编辑的形状名称以匹配水印图像的指定名称]
ActiveDocument.Sections(1).Range.Select
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.HeaderFooter.Shapes("US-CA watermark").Select
Selection.Delete
以下是Excel中我从中派生的代码片段: [预定义的sWatermark字符串以匹配图片名称]
With wrdDoc
.Sections(1).Range.Select
.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
.Selection.HeaderFooter.Shapes(sWatermark).Select
.Selection.Delete
End With
结果:每当我尝试选择水印时,VBA就会窒息(With块中的第3行)。
我已经尝试过问题,有没有。前缀[即作为wrdDoc.Selection和只是选择(如在原始Word宏中)]。
在验证范围中只有1个项目后,我尝试将水印作为.HeaderFooter.shapes(1)访问。同样,这似乎在Word VBA中运行得相当令人满意,但从未在Excel VBA中运行。
为什么?!?!?!
答案 0 :(得分:0)
尽可能避免使用Selection,因为它可以在宏执行期间更改。例如:
wrdDoc.StoryRanges(wdPrimaryHeaderStory).ShapeRange(1).Delete