0

我正在尝试将重命名函数包含到打开 Word 文件并查找跟踪更改的循环中 - 如果有跟踪更改,我想重命名文件以获取 _tracked_changes_ 前缀。

但是,我遇到了一个问题 - 我收到一个权限被拒绝错误,我假设是因为当我尝试重命名文件时文件已打开。但是,当我包含 objFile.close 函数时,“调用的对象已与其客户端断开连接”。我不知道如何保持 objFile 变量对我正在处理的文件的引用并绕过“权限被拒绝”问题。

代码是:

Set fso = CreateObject("Scripting.FileSystemObject")
Set app = CreateObject("Word.Application")
    app.Visible = false
    app.DisplayAlerts = true


For Each objFile In fso.GetFolder(".").Files
    If Lcase(fso.GetExtensionName(objFile)) = "docx" Then
    <<<subprocedure that checks for tracked changes>>>
    set objFile = app.Documents.Open(objFile.Path)
    objFile.Name = "_tracked_changes_" & objfile.name
    'Call check_tc

End If

下一个

如果我没有 set objFile = app.Documents.Open(objFile.Path) 元素,这自然可以正常工作,但是我必须打开文件以查看它是否已跟踪更改。

4

1 回答 1

1

首先,将 更改为set objFile = app.Documents.Open(objFile.Path)除 之外的其他内容objFile,因为这是重用第一个objFile,这就是您收到断开连接错误的原因。

然后你应该能够关闭它。
那么
set objWord = app.Documents.Open(objFile.Path)
objWord.close
那么
objFile.Name = "_tracked_changes_" & objfile.name

于 2013-11-06T16:11:15.617 回答