Word VBA Макросы: Работа с окнами и областями документа.

Автор KR, 03 января 2020, 18:19

KR

Есть документ, в котором отслеживаются изменения (в режиме правки). Нужно сделать в окне документа области Pane, в одной из которых исходный документ (только чтение), во второй - изменённый документ (только чтение), в основной области - документ в режиме правки. По аналогии с функцией сравнения, но только для одного документа.

Для изменения представления использую для области .View.RevisionsFilter
Не знаю, каким образом сделать различное представление документа в разных областях?

Если отказаться от областей (Pane) и создать новые окна одного и того же  документа, то настроить в каждом из них необходимое отображение можно. Но как тогда можно расположить три окна одного документа рядом друг с другом, как в функции сравнения?



KR

Есть решение с созданием временного файла:
Макрос

Sub CompareDocVersions()

  Dim ActiveDocFullName As String
  Dim ActiveDocName As String
  Dim ActiveDocPath As String
  Dim TmpFileFullName As String
 
  Dim objFile As Object
 
  With ActiveDocument
 
    ActiveDocFullName = .FullName
    ActiveDocName = .Name
    ActiveDocPath = .Path
 
  End With
 
  TmpFileFullName = ActiveDocPath & "\" & "TMP_" & ActiveDocName
 
  Set objFile = CreateObject("Scripting.FileSystemObject").GetFile(ActiveDocFullName)
  objFile.Copy TmpFileFullName
 
  Documents.Open TmpFileFullName
  Documents(TmpFileFullName).RejectAllRevisions
  Documents(TmpFileFullName).Save
 
  Application.CompareDocuments _
    OriginalDocument:=Documents(TmpFileFullName), _
    RevisedDocument:=Documents(ActiveDocFullName), _
    Destination:=wdCompareDestinationRevised, _
    Granularity:=wdGranularityWordLevel, _
    CompareFormatting:=True, _
    CompareCaseChanges:=True, _
    CompareWhitespace:=True, _
    CompareTables:=True, _
    CompareHeaders:=True, _
    CompareFootnotes:=True, _
    CompareTextboxes:=True, _
    CompareFields:=True, _
    CompareComments:=True, _
    CompareMoves:=True, _
    RevisedAuthor:="KR", _
    IgnoreAllComparisonWarnings:=False

    ActiveWindow.ShowSourceDocuments = wdShowSourceDocumentsBoth
    ActiveWindow.View.SplitSpecial = wdPaneRevisions

End Sub
[свернуть]

Но хотелось бы что-то более элегантное, и без временных файлов...