|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.05.2012, 12:44 | #1 |
Пользователь
Регистрация: 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. Причина: Опечатки |
23.05.2012, 22:06 | #2 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Selection - это Application.Selection (т.е. в том приложении, в котором исполняется код). Нужно писать WordObj.Selection.
Для замены знака абзаца на пробел в конце i-го абзаца можно использовать такой метод: Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужен макрос или программа для пакетной обработки файлов | 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 |