用于删除格式的 Word 宏在作为 VB 脚本实现时表现不同

问题描述 投票:0回答:0

有一个现有的宏用于从文档中删除高亮格式:

Sub RemoveShading()
Selection.Font.Shading.Texture = wdTextureNone
Selection.Shading.BackgroundPatternColor = wdColorWhite
Selection.Shading.ForegroundPatternColor = wdColorWhite
End Sub

一切正常;当我选择所有文本并运行宏并跟踪文档中的更改时,我看到文档更新了以下更改:

格式化:图案清晰

格式化:图案:纯色 (100%)(白色)

在文档中以前存在突出显示的位置。

但是,现在,由于某些原因,我需要将其实现为 VB 脚本 (VBS)。当我应用我理解的完全相同的代码时:

    ' Open the current file
    Set WordDoc = Word.Documents.Open(objFile.path)
    
    ' select and de-highlight the whole document
    Word.Selection.WholeStory
    Set WordText = Word.Selection
    WordText.Font.Shading.Texture = wdTextureNone
    WordText.Shading.BackgroundPatternColor = wdColorWhite
    WordText.Shading.ForegroundPatternColor = wdColorWhite

    ' save in a new file to preserve original
    newPath = objFSO.BuildPath(objFolder.path, objFSO.GetBaseName(objFile.path)&"_done.docx")
    WordDoc.SaveAs(newPath)
    WordDoc.Close

相反,整个文档都跟踪了如下更改:

格式:字体:默认(宋体)
格式:字体:非粗体
格式:字体:(默认)Arial,11pt
格式:字体:不粗体, 不是斜体

此外,整个文档现在所有文本的背景都是白色的,我只注意到这是因为我的机器上有一个深色的办公室主题(但不是我最初运行宏的那个)。然而,当我在我的机器上运行相同的宏时,背景保持空白而不是变白。

我在这里做错了什么?同样的代码怎么能对同一份文件做如此不同的事情呢?

我唯一能想到的是我做错了选择,因为这当然不存在于原始宏中,但这对我来说真的没有任何意义。

非常感谢!

ms-word vbscript macros
© www.soinside.com 2019 - 2024. All rights reserved.