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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2012, 12:44   #1
lovial
Пользователь
 
Регистрация: 08.10.2010
Сообщений: 21
По умолчанию Проблема в макросе пакетной обработки

Вот макрос
Sub Abz111()
Set WordObj = CreateObject("Word.Application")
MyPath = "C:\Obrabotka\1\"
iFileName = Dir(MyPath)
Do While iFileName <> ""
Set WordDoc = WordObj.Documents.Open(MyPath + iFileName)
WordObj.Visible = False
Dim ab As Integer
Dim b As String
Dim b1 As String
Dim dl As Long
Dim Text As String
Dim i As Long
Dim j As Long
Dim k As Long
Dim sPar As String
Dim sZam As String
Dim par As Paragraph
Dim np As Long
Dim np1 As Long

mdl = 0
ab = WordObj.Documents(iFileName).Paragr aphs.Count
For i = 1 To ab
b = WordObj.Documents(iFileName).Paragr aphs(i).Range
dl = Len(b)
If dl > mdl Then mdl = dl
Next i

For i = 1 To ab - 1
b = WordObj.Documents(iFileName).Paragr aphs(i).Range
dl = Len(b)
b1 = WordObj.Documents(iFileName).Paragr aphs(i + 1).Range
dl1 = Len(b1)
np = 0
np1 = 0

j = 1
Do While Mid(b, j, 1) = Chr(32)
np = np + 1
j = j + 1
Loop


j = 1
Do While Mid(b1, j, 1) = Chr(32)
np1 = np1 + 1
j = j + 1
Loop

WordObj.Documents(iFileName).Paragr aphs(i).Range.Select
'Selection.Find.ClearFormatting
'Selection.Find.Replacement.ClearFo rmatting
With Selection.Find
.Text = "^p"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
WordObj.Documents(iFileName).SaveAs FileFormat:=wdFormatDocument
WordObj.Documents(iFileName).Close SaveChanges:=True
iFileName = Dir
Loop
WordObj.Quit
Set WordDoc = Nothing
Set WordObj = Nothing
End Sub

Он открывает последовательно файлы из папки, считает количество и длину абзацев, а потом должен заменять символ абзаца в выделенном абзаце на пробел.
Проблема в том, что пробелы он считает в открытом (неотображаемом) файле, т.е. как и должен, а вот дальше абзацы меняются на пробелы не в открытом (неотображаемом) документе, а в текущем (в котором я запустил макрос на выполнение). Попытался вставить вот эту конструкцию WordObj.Documents(iFileName).Paragr aphs(i).Range.Select которая, как я понимаю, должна выделить абзац в обрабатываемом документе для дальнейшей замены в нем символа абзаца пробелом, но она не работает (или неправильно работает). Собственно, хотелось бы знать, что я делаю не так...

Последний раз редактировалось lovial; 23.05.2012 в 12:54. Причина: Опечатки
lovial вне форума Ответить с цитированием
Старый 23.05.2012, 22:06   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Selection - это Application.Selection (т.е. в том приложении, в котором исполняется код). Нужно писать WordObj.Selection.
Для замены знака абзаца на пробел в конце i-го абзаца можно использовать такой метод:
Код:
n = WordDoc.Paragraphs(i).Range.End - 1 'номер символа перед знаком абзаца
WordDoc.Range(n, n + 1).Delete          'удалить знак абзаца
WordDoc.Range(n, n).InsertAfter " "     'вставить пробел
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен макрос или программа для пакетной обработки файлов srgg Microsoft Office Word 2 23.05.2012 13:05
Макрос пакетной замены swan1976 Microsoft Office Word 2 26.12.2009 17:48
Проблема с определением строки в макросе Евгений(mE) Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 17.11.2008 11:40
Константы в Макросе valerij Microsoft Office Excel 2 03.02.2008 23:33