Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 09-23-2021, 02:08 AM
maimi23 maimi23 is offline batch compare word file Windows 10 batch compare word file Office 2016
Novice
batch compare word file
 
Join Date: Sep 2021
Posts: 1
maimi23 is on a distinguished road
Default batch compare word file

I have one folder called "RAW" contains 30 .rtf files, and another folder called "NEW" contains 30 .rtf files with same name with the raw folder.

I can compare them one by one using the word compare option, but it is tedious. Can i have a method to compare them one by one automatically, and store all the compared files with editing mode in a third new folder?

I have wrote a VBA macro, but it can not work accurately:
************************************************** ***
Sub TFL_Review()
Dim fldrVersion1 As String, fldrVersion2 As String
Dim strVersion1 As String, strVersion2 As String
Dim docVersion1 As Document, docVersion2 As Document
Dim docCompareTarget As Document
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "Select the folder that contains the original files."
If .Show = -1 Then
fldrVersion1 = .SelectedItems(1)
Else
MsgBox "You did not select a folder."
Exit Sub
End If


End With
With fd
.Title = "Select the folder that contains the revised files."
If .Show = -1 Then
fldrVersion2 = .SelectedItems(1)
Else
MsgBox "You did not select a folder."
Exit Sub
End If
MsgBox fldrVersion1
End With
'For i = 1 To 2
'fldrVersion1 = fldrVersion1 & "\Folder" & i & ""
'fldrVersion2 = fldrVersion2 & "\Folder" & i & ""
fldrVersion1 = fldrVersion1 & ""
fldrVersion2 = fldrVersion2 & ""
MkDir fldrVersion2 & "Compared"
strVersion1 = Dir$(fldrVersion1 & "*.rtf*")
While strVersion1 <> ""
'Set docVersion1 = Documents.Open(strfldrVersion1 & strVersion1)
'Set docVersion2 = Documents.Open(strfldrVersion1 & docVersion1.Name)
Set docVersion1 = Documents.Open(fldrVersion1 & strVersion1)
Set docVersion2 = Documents.Open(fldrVersion1 & docVersion1.Name)
docVersion1.Compare Name:=docVersion2, CompareTarget:=wdCompareTargetNew
ActiveDocument.SaveAs2 fldrVersion2 & "Compared" & docVersion1.Name
ActiveDocument.Close
docVersion1.Close wdDoNotSaveChanges
docVersion2.Close wdDoNotSaveChanges
strVersion1 = Dir$()
Wend
'Next i


End Sub
Reply With Quote
  #2  
Old 09-23-2021, 04:21 AM
gmayor's Avatar
gmayor gmayor is offline batch compare word file Windows 10 batch compare word file Office 2019
Expert
 
Join Date: Aug 2014
Posts: 4,103
gmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud ofgmayor has much to be proud of
Default

I can't say that Compare is something I have ever had a use for, however try the following:


Code:
Option Explicit

Sub TFL_Review()
'Graham Mayor - https://www.gmayor.com - Last updated - 23 Sep 2021
Dim fldrVersion1 As String, fldrVersion2 As String, fldrVersion3 As String
Dim strVersion1 As String, strVersion2 As String
Dim docVersion1 As Document, docVersion2 As Document
Dim docCompareTarget As Document
Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    With fd
        .Title = "Select the folder that contains the original files."
        If .Show = -1 Then
            fldrVersion1 = .SelectedItems(1) & Application.PathSeparator
        Else
            MsgBox "You did not select a folder."
            Exit Sub
        End If
    End With
    With fd
        .Title = "Select the folder that contains the revised files."
        If .Show = -1 Then
            fldrVersion2 = .SelectedItems(1) & Application.PathSeparator
        Else
            MsgBox "You did not select a folder."
            Exit Sub
        End If
    End With

    fldrVersion3 = fldrVersion2 & "\Compared\"
    CreateFolders fldrVersion3
    strVersion1 = Dir$(fldrVersion1 & "*.rtf")
    On Error Resume Next
    While strVersion1 <> ""
        Set docVersion1 = Documents.Open(fldrVersion1 & strVersion1)
        If FileExists(fldrVersion2 & docVersion1.Name) Then
            Set docVersion2 = Documents.Open(fldrVersion2 & docVersion1.Name)
            docVersion1.Compare Name:=docVersion2, CompareTarget:=wdCompareTargetNew
            Set docCompareTarget = ActiveDocument
            docCompareTarget.SaveAs2 fldrVersion3 & docVersion1.Name
            docCompareTarget.Close SaveChanges:=True
        End If
        docVersion1.Close wdDoNotSaveChanges
        docVersion2.Close wdDoNotSaveChanges
        strVersion1 = Dir$()
    Wend
lbl_Exit:
    Exit Sub
End Sub

Private Sub CreateFolders(strPath As String)
'A Graham Mayor/Greg Maxey AddIn Utility Macro
Dim oFSO As Object
Dim lng_PathSep As Long
Dim lng_PS As Long
    If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    lng_PathSep = InStr(3, strPath, "\")
    If lng_PathSep = 0 Then GoTo lbl_Exit
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Do
        lng_PS = lng_PathSep
        lng_PathSep = InStr(lng_PS + 1, strPath, "\")
        If lng_PathSep = 0 Then Exit Do
        If Len(Dir(Left(strPath, lng_PathSep), vbDirectory)) = 0 Then Exit Do
    Loop
    Do Until lng_PathSep = 0
        If Not oFSO.FolderExists(Left(strPath, lng_PathSep)) Then
            oFSO.CreateFolder Left(strPath, lng_PathSep)
        End If
        lng_PS = lng_PathSep
        lng_PathSep = InStr(lng_PS + 1, strPath, "\")
    Loop
lbl_Exit:
    Set oFSO = Nothing
    Exit Sub
End Sub

Private Function FileExists(strFullName As String) As Boolean
'Graham Mayor
'strFullName is the name with path of the file to check
Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    If FSO.FileExists(strFullName) Then
        FileExists = True
    Else
        FileExists = False
    End If
lbl_Exit:
    Set FSO = Nothing
    Exit Function
End Function
__________________
Graham Mayor - MS MVP (Word) (2002-2019)
Visit my web site for more programming tips and ready made processes www.gmayor.com
Reply With Quote
Reply

Tags
vba compare word



Similar Threads
Thread Thread Starter Forum Replies Last Post
batch compare word file Batch applying a macro to remove Header and Footer using Batch Auto Addin Edszx Word VBA 2 05-27-2019 11:16 PM
Save Word as TXT File (per batch) aarona Word VBA 0 07-07-2017 04:31 AM
batch compare word file VBA batch file to insert text at end of 50 files slow, 90% CPU usage equalizer88 Word VBA 3 08-16-2015 04:56 PM
batch compare word file VBA Batch Find & Replace for all MSOffice extensions, to replace File Name and Content of the File QA_Compliance_Advisor Word VBA 11 09-11-2014 11:51 PM
batch compare word file batch file romanticbiro Office 1 06-30-2014 06:04 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 04:24 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft