Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2016, 12:09   #1
moshkov_aleshka
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 14
По умолчанию Отображение работы макроса 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


Но и в том и в том варианте мигание просто выносит мозг особенно когда нужно обработать большое количество документов.
moshkov_aleshka вне форума Ответить с цитированием
Старый 20.03.2016, 00:26   #2
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Эти глаза напротив

Цитата:
Сообщение от moshkov_aleshka Посмотреть сообщение
выносит мозг
А мозгу невдомёк, что тело можно на перерыв увести?!

Посмотрите, как включать/выключать обновление экрана: http://yandex.ru/search/?text=screenupdating

(Можно и прямо здесь на форуме, но там установки поиска надо менять.)
Sasha_Smirnov вне форума Ответить с цитированием
Старый 20.03.2016, 16:44   #3
moshkov_aleshka
Пользователь
 
Регистрация: 18.03.2016
Сообщений: 14
По умолчанию

Спасибо что направили в нужном направлении. Более менее разобрался.
moshkov_aleshka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение прогресс-бара при выполнении макроса Сергей Ш. Microsoft Office Excel 4 09.06.2014 12:59
Макрос для Microsoft Word по обработке текста Xanadu Фриланс 2 28.10.2013 16:18
Правка макроса по обработке txt файла alexsampler Microsoft Office Excel 11 30.08.2012 13:18
тема лабораторной работы по обработке одномерных массивов desu_desu Помощь студентам 6 17.12.2011 15:08
Затруднение при обработке строк GoodTimes Общие вопросы C/C++ 6 16.06.2010 18:00