Vba 比较多对文档
我是一名英语系的教授,我的作文学生经常写多篇论文草稿。我使用Word 2010跟踪他们的变化 我在另一个站点(位于)上发现了VBA代码。我创建了一个新宏。它会正确提示我输入基本文件夹、新建文件夹和比较文件夹,但输出为空 我的基本文件夹和新文件夹中的文件名称相同,并以.doc格式保存。我还将Word中的信任中心选项设置为1)启用所有宏,2)信任访问VBA项目对象模型Vba 比较多对文档,vba,ms-word,Vba,Ms Word,我是一名英语系的教授,我的作文学生经常写多篇论文草稿。我使用Word 2010跟踪他们的变化 我在另一个站点(位于)上发现了VBA代码。我创建了一个新宏。它会正确提示我输入基本文件夹、新建文件夹和比较文件夹,但输出为空 我的基本文件夹和新文件夹中的文件名称相同,并以.doc格式保存。我还将Word中的信任中心选项设置为1)启用所有宏,2)信任访问VBA项目对象模型 Sub CompareAllFiles() Dim strFolderA As String Dim strFold
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,但代码比这更聪明
尤里卡 谢谢你的建议!谢谢你抽出时间请将此标记为问题的答案(在答案旁边加上勾选标记)。