从Excel中删除Word中的水印VBA(redux)Word&之间的差异Excel VBA

时间:2017-03-16 20:09:39

标签: excel-vba word-vba watermark vba excel

[最近有一个类似标题的问题尚未得到令人满意的回答,并没有给我任何见解:-(]

这是我第一次尝试将一个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中运行。

为什么?!?!?!

1 个答案:

答案 0 :(得分:0)

尽可能避免使用Selection,因为它可以在宏执行期间更改。例如:

wrdDoc.StoryRanges(wdPrimaryHeaderStory).ShapeRange(1).Delete