1

Тема: VBA Excel Word поиск и замена текста

Добрый день, уважаемые форумчане.
Опишу ситуацию.
1) Есть файл выгрузки из Sap он сохраняется на рабочем столе под именем."print_template.xls"
2) Написан макрос в эксель"Печать форм.xls", который открывает файл шаблона документа в ворд "Юр _форм _автозамена.doc" находит в нем специальные коды в скобочках к примеру [spec001] и меняет их на значение из файла выгрузки "print_template.xls".
Все работает замечательно, кроме значений в колонтитулах.
Почему-то после повтороного прохождения колонтитула (поиска и замены) переменная очищается, и поэтому не все коды в скобочках заменяются.
В самом документе тот же код работает замечательно.
Подскажите пожалуйста в чем может быть проблема?

2

Re: VBA Excel Word поиск и замена текста

Spare пишет:

Забыл прекрипить файл.

Извините за несколько сообщений.

Post's attachments

Форум.zip 70.53 Кб, 29 скачиваний с 2012-10-16 

You don't have the permssions to download the attachments of this post.

3

Re: VBA Excel Word поиск и замена текста

Судя по всему в функции  Function SearchInRange(oDoc, oRng, obook, l As Object) при замене  кодов в колонтитулах на текст, меняется переменная oRng и L ( диапазон заменяемого текста) первый раз на сам код [], а потом вообще "".
Как это можно побороть?
После передачи переменной в функции я ее не меняю, но ее значение почему-то меняется в коде.
Заранее спасибо

4

Re: VBA Excel Word поиск и замена текста

Всем спасибо, сам разобрался

5

Re: VBA Excel Word поиск и замена текста

написали бы тут решение, возможно для кого то оно будет полезным smile

6

Re: VBA Excel Word поиск и замена текста

admin пишет:

написали бы тут решение, возможно для кого то оно будет полезным smile

Function SearchInRange(oDoc, oRng, obook, l As Object) As Boolean
Dim klop As Object, Z As Boolean
Set klop = l
'Задаем цикл и потом передаем параметры в функцию DoReplace
  With oRng.Find
        .Text = "[[]?*[]]"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchWildcards = True
        .Execute
End With
Do While oRng.Find.Found = True
'oRng.Find.Execute
   If Not oRng = "" Then Codes = oRng
   'If Not oRng = "" Then Codes = Mid(oRng, 2, Len(oRng) - 2)
Set sRow = obook.Sheets(1).Cells.Find(What:=Codes, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False)
If Not sRow Is Nothing Then
        sRow = sRow.Row
        Values = obook.Sheets(1).Range("B" & sRow).Value
        If Len(Values) > 240 Then Values = Left(Values, 240)
        Call DoReplace(klop:=klop, strFind:=oRng, strReplace:=Values)
Else:
    oRng.HighlightColorIndex = wdRed ' Заливаем проблемные коды красным
   If Not oRng = "" Then Codes = Mid(oRng, 2, Len(oRng) - 2)
    Values = Chr(34) & Codes & Chr(34)
    Call DoReplace(klop:=klop, strFind:=oRng, strReplace:=Values)
End If
oRng.Find.Text = "[[]?*[]]"
oRng.Find.Forward = True
oRng.Find.Wrap = wdFindContinue
oRng.Find.Format = False
oRng.Find.MatchWildcards = True
oRng.Find.Execute

Loop
End Function
В функции, исправления выделил жирным шрифтом.
Больше никаких манипуляций не делал, заработало как часы.

7

Re: VBA Excel Word поиск и замена текста

Имеется текст с изображением. Обтекание изображения текстом по умолчанию задано "вокруг рамки". Необходимо поменять обтекание изображения текстом на "в тексте". Однако при изменении вышеуказанного типа обтекания изображение обрезается. В чем может быть дело?
Пример прикладываю.

jimmy

8

Re: VBA Excel Word поиск и замена текста

Имеется текст с изображением. Обтекание изображения текстом по умолчанию задано "вокруг рамки". Необходимо поменять обтекание изображения текстом на "в тексте". Однако при изменении вышеуказанного типа обтекания изображение обрезается. В чем может быть дело?

jimmy