Vba 比较多对文档

Vba 比较多对文档,vba,ms-word,Vba,Ms Word,我是一名英语系的教授,我的作文学生经常写多篇论文草稿。我使用Word 2010跟踪他们的变化 我在另一个站点(位于)上发现了VBA代码。我创建了一个新宏。它会正确提示我输入基本文件夹、新建文件夹和比较文件夹,但输出为空 我的基本文件夹和新文件夹中的文件名称相同,并以.doc格式保存。我还将Word中的信任中心选项设置为1)启用所有宏,2)信任访问VBA项目对象模型 Sub CompareAllFiles() Dim strFolderA As String Dim strFold

我是一名英语系的教授,我的作文学生经常写多篇论文草稿。我使用Word 2010跟踪他们的变化

我在另一个站点(位于)上发现了VBA代码。我创建了一个新宏。它会正确提示我输入基本文件夹、新建文件夹和比较文件夹,但输出为空

我的基本文件夹和新文件夹中的文件名称相同,并以.doc格式保存。我还将Word中的信任中心选项设置为1)启用所有宏,2)信任访问VBA项目对象模型

Sub CompareAllFiles()
    Dim strFolderA As String
    Dim strFolderB As String
    Dim strFolderC As String
    Dim strFileSpec As String
    Dim strFileName As String
    Dim objDocA As Word.Document
    Dim objDocB As Word.Document
    Dim objDocC As Word.Document
    strFolderA = InputBox("Enter path to base documents:")
    strFolderB = InputBox("Enter path to new documents:")
    strFolderC = InputBox("Enter path for document comparisons to be saved:")
    strFileSpec = "*.doc"
    strFileName = Dir(strFolderA & strFileSpec)
    Do While strFileName <> vbNullString
        Set objDocA = Documents.Open(strFolderA & strFileName)
        Set objDocB = Documents.Open(strFolderB & strFileName)
        Application.CompareDocuments _
            OriginalDocument:=objDocA, _
            RevisedDocument:=objDocB, _
            Destination:=wdCompareDestinationNew
        objDocA.Close
        objDocB.Close
        Set objDocC = ActiveDocument
        objDocC.SaveAs FileName:=strFolderC & strFileName
        objDocC.Close SaveChanges:=False
        strFileName = Dir
    Loop
    Set objDocA = Nothing
    Set objDocB = Nothing
End Sub
子比较文件()
作为字符串的暗淡strFolderA
作为字符串的Dim strFolderB
作为字符串的Dim strFolderC
作为字符串的Dim strFileSpec
将strFileName设置为字符串
Dim objDocA作为Word.Document
作为Word.Document的Dim objDocB
作为Word.Document的Dim objDocC
strFolderA=InputBox(“输入基本文档的路径:”)
strFolderB=InputBox(“输入新文档的路径:”)
strFolderC=InputBox(“输入要保存的文档比较的路径:”)
strFileSpec=“*.doc”
strFileName=Dir(strFolderA和strFileSpec)
执行While strFileName vbNullString
设置objDocA=Documents.Open(strFolderA&strFileName)
设置objDocB=Documents.Open(strFolderB&strFileName)
应用程序比较文档_
原始文档:=objDocA_
修订文件:=objDocB_
目标:=WDComparedDestinationNew
objDocA,关闭
objDocB.Close
设置objDocC=ActiveDocument
objDocC.SaveAs文件名:=strFolderC&strFileName
objDocC.Close SaveChanges:=False
strFileName=Dir
环
设置objDocA=Nothing
设置objDocB=Nothing
端接头

如果您和您的学生正在使用Word 2010,那么扩展名很可能是
.docx

strFileSpec = "*.docx"

您是否尝试过使用VBA调试器一步一步地运行代码,以查看确切的故障点是什么?有关简单的介绍,请参见(标题为“逐步浏览代码”的部分下)。

某种VBA专家为我找到了答案:我需要在文件夹路径的末尾输入\号。如果没有最后一个反斜杠,脚本将无法定位文件夹,因此无法处理任何文件。将final\添加到所有三个文件夹路径后,代码运行得非常好

作为奖励,代码同时处理.doc和.docx文件。我原以为在处理之前必须将所有.docx文件转换为.doc,但代码比这更聪明


尤里卡

谢谢你的建议!谢谢你抽出时间请将此标记为问题的答案(在答案旁边加上勾选标记)。