【问题标题】:Word document mysteriously write protected?Word文档神秘地写保护?
【发布时间】:2015-01-31 03:34:43
【问题描述】:

我正在尝试对文件夹中的多个 Word 文档执行查找和替换操作。为此,我编写了以下 VBScript:

Option Explicit
Dim Word, Document, FolderPath, FileSystem, FileList, File, Doc, InfoString
Const ReadOnly = 1
Const wdFindContinue = 1
Const wdReplaceAll = 2
Const wdOriginalDocumentFormat = 1

Set FileSystem = CreateObject("Scripting.FileSystemObject")
FolderPath     = FileSystem.GetAbsolutePathName(".")
Set FileList   = FileSystem.GetFolder(FolderPath).files
Set Word       = CreateObject("Word.Application")
Word.Visible   = False
Word.DisplayAlerts = False

For Each File in FileList
    If LCase(Right(File.Name,3)) = "doc" Or LCase(Right(File.Name,4)) = "docx" Then
        If File.Attributes And ReadOnly Then
            File.Attributes = File.Attributes - ReadOnly
        End If
        Set Doc  = Word.Documents.Open(File.Path,,True)
        ' find and replace stuff
    End If
Next

Word.Documents.Save True, wdOriginalDocumentFormat
Word.Quit
MsgBox("Done")

问题是,当它到达Word.Documents.Save 行时,总是弹出另存为对话框。如果我单击“取消”,我会从 Windows 脚本主机收到一条错误消息,指出该文件是写保护的,即使我在文件资源管理器中打开“属性”对话框时它没有显示为写保护。如果我单击保存,系统会提示我也保存所有其他文件。这里有什么问题?

我怀疑这是因为 Word 文档太旧了,比如 1990 年代。

【问题讨论】:

  • 你确定它没有被其他进程使用吗?
  • @MarcB 是的,我可以手动保存。

标签: vbscript ms-word


【解决方案1】:

设置 Doc = Word.Documents.Open(File.Path,,True)

并查看对象浏览器中的文档。

Function Open(FileName, [ConfirmConversions], [ReadOnly], [AddToRecentFiles], [PasswordDocument], [PasswordTemplate], [Revert], [WritePasswordDocument], [WritePasswordTemplate], [Format], [Encoding], [Visible], [OpenAndRepair], [DocumentDirection], [NoEncodingDialog]) As Document
Member of Word.Documents

所以 True 说打开只读。这是Word的只读文件,与文件无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    相关资源
    最近更新 更多