Скрипт замены слов в word

Перейти к содержимому раздела

Серый форум

разработка скриптов

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

1 2008-06-26 11:04:22

  • The gray Cardinal
  • Разработчик
  • Неактивен
  • Рейтинг : [5|0]

Тема: VBScript: замена текста в документе Word

Пример заменяет все вхождения строки «1111» на «2222» в файле «C:temp1.doc» и сохраняет результат в файл «C:temp2.txt».

Option Explicit

Const wdReplaceAll = 2
Const wdFormatText = 2

Dim objWord
Dim objDoc

Set objWord = WScript.CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("C:temp1.doc")

With objWord
    '.Visible = True
    
    With .Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "1111"
        .Replacement.Text = "2222"
        .MatchCase = 0
        .MatchWholeWord = 0
        .MatchWildcards = 1
        .MatchSoundsLike = 0
        .MatchAllWordForms = 0
        .Forward = 1
        .Wrap = 1
        .Format = 0
        
        ' Replace - 11-й параметр метода .Execute
        ' Все остальные параметры - опциональные, их можно опустить,
        ' коль большинство из них было задано выше.
        ' Хотя можно было задать их и в методе .Execute
        .Execute ,,,,,,,,,,wdReplaceAll
    End With
End With

objDoc.SaveAs "C:temp2.txt", wdFormatText
objWord.Quit

Set objWord = Nothing

WScript.Quit 0

Автор примера — alexii.

Предложения в русском языке начинаются с большой буквы и заканчиваются точкой.
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.

Сообщения 1

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

  • ivladislaw:

    Зарплата — ясное дело украинское законодательство. Сумма прописью — в гривнах, поэтому числительные женского рода. Программа писалась так, что любой профессионал ругался бы — вариантные переменные, Option Explicit отсутствует. Однако она работала без ошибок в отличие от «суммы прописью» написанной другим человеком, работавшим ранее программистом «по всем правилам» — та сумму 2 грн с копейками превращала в 11 тысяч — прямо цифру в ячейке (такое можно легко сделать намеренно, но как появилась такая ошибка?). Есть ещё программа, верстающая журналы-ордера, ведомости и оборотный баланс в Excel на основании введённой книги хозяйственных операций. Когда этот же человек проявил инициативу и поставил всем Openoffice, ссылаясь на экономию денег — я был дико злым. Это плохо повлияло на моё отношение к Open Source вообще…
    Думаю, что выложу шашки. Надо сказать, что сделал я их 6 или 7 лет назад и код, скорее всего, ужасен:)

  • По просьбам читателей сайта Александр Витер разработал свой вариант макроса пакетной замены фрагментов текста в документах Word. Об этом его просили в комментариях к заметке Поиск и замена текста во многих документах одновременно.

    Александр предлагает скачать (ниже) бета-версию его разработки кто заинтересован в подобном решении. Вот, что он предлагает.

    Это третья бета-версия макроса пакетной замены. Теперь ее нужно тестировать.

    Что уже сделано:

    1. Доработан механизм поиска в документе. Текст можно заменять как в основном тексте, так и в надписях, в гиперссылках и объектах WordArt.

    2. Добавлены опции «Учитывать регистр» и «Слово целиком».

    3. Если файл доступен только для чтения, то он просто пропускается. Запись об этом делается в лог-файл. Таким образом, можно работать и с документами в локальной сети.

    4. Глубина вложенности каталогов, в которых можно искать файлы, удовлетворяющие шаблону, не ограничена.

    5. Каждый сеанс поисказамены записывается в подробный лог-файл с указанием документа, проведенных в нем замен, затраченного времени и настроек замены.

    6. В процессе поисказамены отображается прогресс-бар.

    Я со своей стороны провел тесты, у меня ошибок не возникает. Возможные ошибки я постарался предусмотреть, но над этим еще нужно будет работать.

    Итак, пожалуйста скачивайте макрос и пробуйте его в деле. Все замечания по макросу (ошибки, предложения) пишите в комментариях к этой заметке.

    Массовый поиск и замена в документах MS Office (Word и Excel)

    Имеется большое количество документов Word или Excel и в каждом документе нужно
    изменить несколько фраз. В каждом документе через замену (Найти и заменить ) это слишком долго.

    Решение:

    1. Вариант с использованием макроса
    2. a) для Microsoft Excel:
      Скопировать макрос в папку с файлами, запустить макрос, задать условия замены, заключая их в кавычки.
      выбрать любой файл из папки.

      Программа пройдётся по всем листам всех книг (*.xls;*.xlsx) в этой папке,
      и поменяет текст в заданной графе. Недостатком способа очевиден –
      замена производится только в указанной графе.
      Скачать макрос можно по ссылке

      б) для Microsoft Word:
      Создать новый документ Word, открыть редактор Microsoft VBA, добавить
      новый модуль, скопировать текст процедуры ниже. О том как создать макрос более подробно написано
      здесь.
      При выполнении макроса нужно выбрать файлы, данные в которых подлежат замене:

      Что изменить и на что изменить прописывается в теле макроса:
      что_заменить = «123»
      чем_заменить = «1234»

      Сам макрос:

    3. В виде приложения

    Для документов Word подойдет @Text Replacer — бecплaтнaя пpoгpaммa для быcтpoгo пoиcкa и зaмeны
    тeкcтa в фaйлax из выбpaннoй пaпки и влoжeнныx пoдпaпoк.
    Работает с дoкумeнтaми тeкcтoвoгo peдaктopa Word: *.doc, *.docx, *.rtf, фaйлaми тeкcтoвoгo фopмaтa:
    *.txt, *.ini, *.html, *.php и дp., paбoтa c кoтopыми вoзмoжнa чepeз cтaндapтный Блoкнoт Windows.
    Вce фaйлы дpугиx типoв oбpaбaтывaютcя пpoгpaммoй кaк тeкcтoвыe.

    Пpoгpaммoй пoддepживaeтcя пoиcк и зaмeнa мнoгocтpoчныx фpaгмeнтoв тeкcтa c учeтoм peгиcтpa и
    игнopиpуeмыx cимвoлoв — тaкиx кaк пpoбeлы и пepeвoды cтpoки (windows / *nix).
    Программа бесплатная, скачать можно по
    ссылке
    с официального сайта программы

    Не пробуйте @Text Replacer для документов Excel – программа их портит!

    Для документов Excel попробуйте FireBall.exe – небольшую программу, не требующую установки.
    Файлы Excel необходимо скопировать в папку с FireBall.exe.

    В ходе работы программа создает новые файлы, добавляя к названию приставку new.
    Скачать программу можно по
    ссылке

    Яндекс.Метрика

    #include <Word.au3>
    #include <Array.au3>
    
    $oWord = _Word_Create()		; Создать Новый экземпляр Word
    $oDoc=_Word_DocOpen($oWord,@ScriptDir&'test.docx') ; Открыть
    
    
    ; Поиск нужного фрагмента
    $Pos1=ContextSearch("текст1")
    $Pos2=ContextSearch("текст2")
    $oDoc.Range($Pos1[1],$Pos2[0]).Select ; Выделить нужный нам фрагмент для наглядности
    $Data=$oDoc.Range($Pos1[1],$Pos2[0]).Text ; Получить текст фрагмента
    MsgBox(0,'Найденный фрагмент',$Data)
    
    ; Поиск фрагмента для замены
    $Pos1=ContextSearch("текст3")
    $Pos2=ContextSearch("текст4")
    $oDoc.Range($Pos1[1],$Pos2[0]).Select ; Выделить нужный нам фрагмент для замены
    ; $oWord.Selection.TypeText($Data) ; Заменить найденный текст
    
    
    ; Поиск фрагмента строки в документе Word, по умолчанию первый
    Func ContextSearch($Context,$Occurrence=1)
     Local $KolOccurrence=0 ; Число вхождений
     Local $aPos[2]=[0,0]  ; Массив позиций начала и конца фрагмента
    
     $oWord.Documents(1).Select
     For $i=1 To $Occurrence
    	$oWord.Selection.Find.Text = $Context
    	$oWord.Selection.Find.ClearFormatting ; Очищает форматирование внутри объекта Find, поиск без учета форматирования
    	$oWord.Selection.Find.Execute	; Запустить поиск
    	If $oWord.Selection.Find.Found()=False Then
    		MsgBox(16,'Не найден '&$i&' фрагмент',$Context)
    		;Return $aPos
    		Exit
    	EndIf
    	$KolOccurrence+=1
    	If $Occurrence=$KolOccurrence Then
    		$aPos[0]=$oWord.Selection.start
    		$aPos[1]=$oWord.Selection.End
    		;$oWord.Selection.Collapse($wdCollapseEnd) ; Снять выделение Курсор в конце выделенного текста
    		Return $aPos
    	EndIf
     Next
    EndFunc

    Like this post? Please share to your friends:
  • Скрипт замены в excel
  • Скрипты для excel на python
  • Скрипт для формирования excel
  • Скрипты visual basic excel
  • Скрипт для сравнения двух файлов excel