powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Замена строки в документе Word, через OLE (BCB6)
3 сообщений из 3, страница 1 из 1
Замена строки в документе Word, через OLE (BCB6)
    #32674825
Фотография osse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо: открыть файл и определенную строку заменить нужное значение.
Получив через Word-овское создание макросов соответствующий этому действию VBA-код, "перенес" его на C++ Builder:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
     
     docs_list.OleProcedure("Open",(GetCurrentDir()+FileName).c_str(),False,False,False,"","",False,"","",wdOpenFormatAuto);
     Selection = word_appl.OlePropertyGet("Selection");

     Selection.OleProcedure("MoveUp",wdScreen, 1 );

         Variant Find = Selection.OlePropertyGet("Find");
         Find.OleProcedure("ClearFormatting");
         Find.OlePropertyGet("Replacement").OleProcedure("ClearFormatting");
         Find.OlePropertySet("Text","%STUDENT%");
         Find.OlePropertyGet("Replacement").OlePropertySet("Text","1");
         Find.OlePropertySet("Forward",True);
         Find.OlePropertySet("Wrap",wdFindContinue);
         Find.OlePropertySet("Format",False);
         Find.OlePropertySet("MatchCase",False);
         Find.OlePropertySet("MatchWholeWord",False);
         Find.OlePropertySet("MatchWildcards",False);
         Find.OlePropertySet("MatchSoundsLike",False);
         Find.OlePropertySet("MatchAllWordForms",False);

         Find.OleProcedure("Execute",wdReplaceAll);

В результате выполнения файл в Word открывается, но никакой замены не происходит. Если кто-либо сталкивался с подобной задачей plz отзовитесь :-)

p.s. Исходный код на VBA:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Documents.Open FileName:="d:\u30.doc", ConfirmConversions:=False, ReadOnly:= _
        False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
        "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
        Format:=wdOpenFormatAuto
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "%STUDENT%"
        .Replacement.Text = "1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
При запуске из Word этого макроса, разумеется, все выполняется как надо.
...
Рейтинг: 0 / 0
Замена строки в документе Word, через OLE (BCB6)
    #32675192
Фотография osse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на самом деле, нужно было брать за основу след. vba-макрос
Код: plaintext
1.
2.
3.
  Set myRange = ActiveDocument.Content
  myRange.Find.Execute "hi", False, False, False, False, False, True, wdFindContinue, False, "hello", wdReplaceAll, False, False, False, False

...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Замена строки в документе Word, через OLE (BCB6)
    #33305956
vdo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vdo
Гость
A как тоже самое но в Visual C++...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Замена строки в документе Word, через OLE (BCB6)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]