1

Тема: Отображение работы макроса word при пакетной обработке

По специфике работы нужен макрос который чистит колонтитулы документов. Макрос кое как криво сварганил - вроде работает. Но возникла проблема поскольку макрос работает в пакете он постоянно открывает новые окна документа. Можно как то сделать чтоб макрос выполнялся в фоне при закрытом мс word либо чтоб был открыт только один ворд и не было миганий.

Текст макроса:

Sub ProcessFiles2()
Application.ScreenUpdating = False
Dim mypath As String
Dim MyFile As String
Dim adoc As Document
mypath = "D:\Temp\Files\"
MyFile = Dir(mypath)
Do While MyFile <> ""
If MyFile Like "*.doc*" Then
Set adoc = Nothing
On Error Resume Next
Set adoc = Documents.Open(mypath & MyFile)
On Error GoTo 0
If Not (adoc Is Nothing) Then
Dim sec As Section
Dim hf As HeaderFooter
Dim rng As Range
For Each sec In ActiveDocument.Sections
For Each hf In sec.Headers
hf.Range.Delete
Next hf
For Each hf In sec.Footers
hf.Range.Delete
Next hf
Next sec
End If
adoc.Close savechanges:=wdSaveChanges
End If
MyFile = Dir
Loop
End Sub

Изначально был в двух макросах

Sub ProcessFiles()
Dim mypath As String
Dim MyFile As String
Dim adoc As Document
mypath = "D:\Temp\Files\"
MyFile = Dir(mypath)
Do While MyFile <> ""
If MyFile Like "*.doc*" Then
Set adoc = Nothing
On Error Resume Next
Set adoc = Documents.Open(mypath & MyFile)
On Error GoTo 0
If Not (adoc Is Nothing) Then
ProcessFile
End If
adoc.Close savechanges:=wdSaveChanges
End If
MyFile = Dir
Loop
End Sub
Sub ProcessFile()
Dim sec As Section
Dim hf As HeaderFooter
Dim rng As Range
For Each sec In ActiveDocument.Sections
For Each hf In sec.Headers
hf.Range.Delete
Next hf
For Each hf In sec.Footers
hf.Range.Delete
Next hf
Next sec
End Sub

Но и в том и в том варианте мигание просто выносит мозг особенно когда нужно обработать большое количество документов.

2

Re: Отображение работы макроса word при пакетной обработке

При закрытом ворде макрос ворда некому будет выполнять.  smile
Можно открыть обрабатываемый документ в скрытом режиме:

Set MyDoc = Documents.Open(FileName:=myName, Visible:=False)

Или скрыть его принудительно при запуске макроса на выполнение:

MyDoc.Windows(1).Visible = False