Имя: Пароль:
1C
1С v8
v8: Замена текста в автофигуре word
,
0 sv201
 
07.07.13
11:10
Добрый день!

Есть документ Word.
Заполняю программно:

TextFind.Execute("[V1]", Ложь, Истина, Ложь, , , Истина, , Ложь,                           "test", 2);

Текст [V1] находится в таблице, которая находится в автофигуре.
Почему-то текст не заменяется, хотя вне автофигуры все отрабатывает нормально. Кто-нибудь знает как это обойти?
1 МихаилМ
 
07.07.13
11:20
в word есть запись макроса.
запишите нужные действия.  подсмотрите, адаптируйте для 1с.
2 sv201
 
07.07.13
11:29
других вариантов нету никогда не работал с макросами, как с ними работать
3 МихаилМ
 
07.07.13
11:34
другой вариант.

проделать (1)
за Вас.

ждите добрых.

или воспользуйтесь поисковыми службами интернет.
4 sv201
 
07.07.13
11:39
Sub findTextFrame()
'заменяем текст в каждой надписи в документе
Dim rng As Range
Dim sh As Shape
Dim str As String
str = "[мк1]"

For Each sh In ActiveDocument.Shapes
  With sh.TextFrame
     If .HasText <> 0 Then
        Set rng = .TextRange
        With rng.Find
           .ClearFormatting
           .Replacement.ClearFormatting
           .Text = str
           .Replacement.Text = "новая запись"
           .Forward = True
           .Wrap = wdFindContinue
           .MatchCase = False
           .Execute Replace:=wdReplaceAll
        End With
     End If
  End With
Next sh

End Sub
5 sv201
 
07.07.13
11:40
вот макрос поиска и замены
6 sv201
 
07.07.13
11:40
только почему то не работает
7 МихаилМ
 
07.07.13
11:42
(6)
макрос не работает ?
8 sv201
 
07.07.13
11:46
нашел в интернете макрос замены в автофигуре но почему даже на стадии еще редактирование шаблона wotd не срабатывает
9 sv201
 
07.07.13
11:46
макрос (4)
10 Voronve
 
07.07.13
12:34
(9) Надпись <> Автофигура
11 sv201
 
07.07.13
13:36
возможно решить таким вариантом:

Для к=1 по Документ.Shapes.Count цикл
Документ.Shapes.Item(к).TextFrame.TextRange.Text.Find.Execute("[мк1]",0,0,,,,,,,НомерОтчетаИП,2);
КонецЦикла;
12 sv201
 
07.07.13
13:36
при компиляции ссылаеться на ошибку textRange
13 sv201
 
07.07.13
14:00
вот еще вариант но тоже ссылается на ошибку TextRange
ссылка на страницу http://dev.mista.ru/topic.php?id=128744

синтаксис:

Для к=1 по oWord.ActiveDocument.Shapes.Count Цикл
oWord.ActiveDocument.Shapes(к).TextFrame.TextRange.Text=СтрЗаменить(oWord.ActiveDocument.Shapes(к).TextFrame.TextRange.Text,"Вася","Петя");
КонецЦикла;
14 sv201
 
07.07.13
14:19
?
15 sv201
 
07.07.13
17:01
????
16 sv201
 
07.07.13
17:54
просьба помочь перевести из язика с++ в 1С

1
2
3
4
5
6
7
8

   

tagVARIANT a = (OleVariant) 2;//номер автофигуры
WordApplication1->ActiveWindow->ActivePane->View->SeekView = wdSeekCurrentPageHeader;//активируем колонтитул
WordApplication1-> Selection->HeaderFooter->Shapes->Item(&a)->Select();//выделяем автофигуру
TVariant strFindFor = "~№";//метка - текст в автофигуре
TVariant strReplaceWith = "111";//на что заменяем
WordApplication1->Selection->Find->Execute(strFindFor,EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, strReplaceWith,
(TVariant)wdReplaceAll,EmptyParam, EmptyParam, EmptyParam, EmptyParam);
17 sv201
 
07.07.13
18:38
никто незнает???
18 Ковычки
 
07.07.13
19:05
хрень
19 sv201
 
07.07.13
23:08
обновление страницы
20 sv201
 
08.07.13
11:05
СчетчикЦикла = 0;
   КолВоНадписей = Документ.Shapes.Count;
   Для СчетчикЦикла = 1 По КолВоНадписей Цикл
       
       мНашлиАФ = Документ.Shapes.Item(СчетчикЦикла);

       мНашлиАФ.TextFrame.Application.Selection.Find.Execute("[мк1]",Ложь,Истина,Ложь,,,Истина,,Ложь, "текст замены",2);
     
   КонецЦикла;

Заменяет только один параметр, если в цикле использовать еще замену то вообще ничего не заменяет