dcsimg

VB Script to Compare Two Text Files

By Danny Lesandrini (Send Email)
Posted May 29, 2001



Download Code For This Article
DataFast Consulting
DataFast Access Utility Want a quick and easy way to check some class module files or SQL Script files for changes? Check out this Visual Basic Script for an automated and simplified process of comparing files.


Why Do I Need To Compare Documents?

Good question, and the answer will depend on your particular circumstances.

In my case, the need to compare documents arose when I wanted to find the differences in various code modules. Of course, Visual Source Safe will do this for you, but what if you just want to check some class module files ... or SQL Script files for changes? Maybe your code isn't in VSS or you just want a fast way to verify that code modules haven't changed?

How can this be accomplished quickly? Enter Microsoft Word Automation

MS Word Compare Documents Feature

Perhaps you weren't aware that Microsoft Word has a Compare Documents feature. To activate it, open any document (we'll refer to it as DocA) in Word. Next, go to the Tools menu and select Compare from the Track Changes option. (See illustration) Navigate to the second document (DocB) and click the Open button. Presto-chango, Word displays a merged document with all differences marked in red, strike-out font.



Automating the Process

Of course, this is a somewhat tedious process that can be automated and simplified with VB Script. You can copy and paste the following code into Notepad and save as a .vbs file ... or simply download my CompareDocs.vbs file. Comments explaining the code are interspersed below.



' ***************************************************
'  Script To Invoke the MS Word Compare Docs
'
'  Danny J. Lesandrini     May 31, 2001
'  datafast@home.com    http://datafast.cjb.net
'
'
'  This script will uses COM Automation to access
'  the MS Office Object Model in order to use the
'  MS Word Compare Documents routine on two files.
'
'  The user is prompted for the paths of the two
'  documents to be compared.  The FileSystemObject
'  is used to perform validation on the file paths
'  provided by the user.  If not valid, the script
'  exits gracefully.
'
'  Note that the CreateObject call uses the generic
'  reference, "Word.Application" with no version
'  number.  This assures that the script won't break
'  just because the client machine doesn't contain
'  the correct version of MS Word.  The script
'  will break, however, if no version of Word is
'  found on the client machine
'
' ***************************************************

Dim objWord
Dim objScript
Dim strDocA
Dim strDocB
Dim fContinue
'Const vbExclamation = 48 

strDocA = InputBox("Enter complete path first doc", "Compare")
strDocB = InputBox("Enter complete path second doc", "Compare")

' Assume that user entered valid file paths
fContinue = True

' Test file paths to DocA and DocB for validity.
' -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Set objScript = CreateObject("Scripting.FileSystemObject")
fContinue = objScript.FileExists(strDocA)
fContinue = objScript.FileExists(strDocB)
Set objScript = Nothing

If fContinue = False Then
    MsgBox "Invalid File Paths" ,vbExclamation ,"Error"
Else
    ' Only continue if user has typed text into InputBox.
    Set objWord = CreateObject("Word.Application")

    objWord.Documents.Open strDocA
    objWord.ActiveDocument.Compare strDocB
    objWord.Visible = True

    Set objWord = Nothing
End If
Conclusion:

As you can see, it doesn't take much code to implement this solution. You must have MS Word installed and properly registered for it to work, but all things considered, it's a fast and efficient way to compare two documents.

Page 1 of 1


Comment and Contribute

Your name/nickname

Your email

(Maximum characters: 1200). You have characters left.