循环比较宏 [英] Loop comparison macro

查看:52
本文介绍了循环比较宏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经使用Word完成了一个文本比较宏,我需要循环它,以便它可以在几套文档之间进行比较.关于如何做的任何想法? 这是我的密码

I've done a text comparison macro using Word and I need to loop it so that it can compare between a few sets of documents. Any idea on how to do so? Here's my codes

   Dim template1 As Word.Document
   Dim spool1 As Word.Document
   Set template1 = Documents.Open("D:\Users\tmp4jj\Desktop\ComparisonTool\template1.docx")
   Set spool1 = Documents.Open("D:\Users\tmp4jj\Desktop\ComparisonTool\spool1.txt")
Application.CompareDocuments OriginalDocument:=Documents("template1.docx") _
    , RevisedDocument:=Documents("spool1.txt"), Destination:= _
    wdCompareDestinationNew, Granularity:=wdGranularityWordLevel, _
    CompareFormatting:=False, CompareCaseChanges:=True, CompareWhitespace:= _
    False, CompareTables:=True, CompareHeaders:=True, CompareFootnotes:=True, _
     CompareTextboxes:=True, CompareFields:=True, CompareComments:=True, _
    CompareMoves:=False, RevisedAuthor:="UOB", IgnoreAllComparisonWarnings:= _
    False
ActiveWindow.ShowSourceDocuments = wdShowSourceDocumentsBoth

我还做了一个文件计数宏,不确定是否需要

and I also did a file counting macro, not sure if its required

    Dim FolderPath As String, path As String, count As Integer
FolderPath = "D:\Users\tmp4jj\Desktop\ComparisonTool"

path = FolderPath & "\*.docx"
path = FolderPath & "\*.txt"


FileName = Dir(path)

Do While FileName <> ""
   count = count + 1
    FileName = Dir()
Loop

MsgBox count & " : files found in folder"

Windows("Document1").Activate
Application.Run MacroName:="FileCount"
Application.Move Left:=-3, Top:=-3
Application.Run MacroName:="FileCount"
Application.Move Left:=-3, Top:=-3

推荐答案

不能完全确定您的意思,但是您可以使用内置文件对话框选择一批要操作的文件.

not entirely sure what you mean but you can select a batch of files to operate on using using the built-in file dialogs.

一个例子是:

Sub Example()
    Dim item, templateDoc As Document, compareDoc As Document

    'Get template file
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Title = "Select template"
        If .Show = 0 Then Exit Sub
        Set compareDoc = Documents.Open(.SelectedItems(1))
    End With

    'Get files to batch process
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Title = "Select files to compare"
        If .Show = 0 Then Exit Sub
        For Each item In .SelectedItems
            'Do some stuff
            Set compareDoc = Documents.Open(item)
            CompareDocs templateDoc, compareDoc
            compareDoc.Close
        Next
    End With

End Sub
Sub CompareDocs(templateDoc As Document, compareDoc As Document)
    Application.CompareDocuments _
            OriginalDocument:=templateDoc, _
            RevisedDocument:=compareDoc, _
            Destination:=wdCompareDestinationNew, _
            Granularity:=wdGranularityWordLevel, _
            CompareFormatting:=False, _
            CompareCaseChanges:=True, _
            CompareWhitespace:=False, _
            CompareTables:=True, _
            CompareHeaders:=True, _
            CompareFootnotes:=True, _
            CompareTextboxes:=True, _
            CompareFields:=True, _
            CompareComments:=True, _
            CompareMoves:=False, _
            RevisedAuthor:="UOB", _
            IgnoreAllComparisonWarnings:=False
    ActiveWindow.ShowSourceDocuments = wdShowSourceDocumentsBoth
End Sub

这篇关于循环比较宏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆