powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Макрос Word в FoxPro
9 сообщений из 9, страница 1 из 1
Макрос Word в FoxPro
    #37280250
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Хочу в документе Word везде заменить слово STREET на слово УЛИЦА. Макрос, который создан Word-ом, представлен ниже. Хотелось бы адаптировать его под Fox.

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "STREET"
.Replacement.Text = "УЛИЦА"
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37280321
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_П, создаёте объект ворда в фоксе
Код: plaintext
goword=createobject("Word.Application")
Пишете "WITH goword"... после чего весь макрос отработает в фоксе "как есть".
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37282765
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макс_П Selection.Find.Execute Replace:=wdReplaceAll
Значение константы wdReplaceAll = 2.
Пробовал: Selection.Find.Execute Replace=2 и так Selection.Find.Execute=2
Но это не работает. Как здесь для Fox-a сделать правильно?
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37282875
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс_ПМакс_П Selection.Find.Execute Replace:=wdReplaceAll
Значение константы wdReplaceAll = 2.
Пробовал: Selection.Find.Execute Replace=2 и так Selection.Find.Execute=2
Но это не работает. Как здесь для Fox-a сделать правильно?
А как в синтаксисе FoxPro запускаются процедуры и методы и как им передаются параметры? Вот так и делаете

Открываете справку VBA по методу Find.Execute() и смотрите его синтаксис

VBA Word 2003. Execute method as it applies to the Find objectexpression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)
ReplaceWith - это 10 параметр. Значит, надо предварить 9 запятыми

Код: plaintext
Selection.Find.Execute(,,,,,,,,, 2 )

Соответственно, вместо предварительного формирования параметров Find можно просто указать их как параметры метода Execute()
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37283133
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМVBA Word 2003. Execute method as it applies to the Find objectexpression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)
ReplaceWith - это 10 параметр. Значит, надо предварить 9 запятыми

Код: plaintext
Selection.Find.Execute(,,,,,,,,, 2 )

Соответственно, вместо предварительного формирования параметров Find можно просто указать их как параметры метода Execute()
Подробно и доходчиво! Спасибо!!!
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37642038
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем, добрый день! Хочу сделать поиск в Excel. Код взял из макроса Excel и переделал под Fox.
Когда ищу существующее значение, то всё нормально, а если значение отсутствует, то выдаёт ошибку
Member Find does not evaluate to an object
Что я делаю не так?

loExcel = CREATEOBJECT("Excel.Application")
loExcelDoc = loExcel.WorkBooks.Open(&q1)
loExcelDoc.Sheets(1).Select
WITH loExcel.Selection
IF .Cells.Find("ААААААААААА",,-4123,2,1,1,.F.,,.F.).Activate <--- место ошибки

ENDIF
ENDWITH
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37642050
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверно ошибка если не найдено - это нормальное поведение. Перехватывай через TRY...CATCH
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37642111
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Макс_П
> IF .Cells.Find("ААААААААААА",,-4123,2,1,1,.F.,,.F.).Activate <--- место ошибки

Метод Find возвращает объект Range, если что-то находит. Поэтому присваивай результат Find'a переменной, проверяй эту
переменную на содержание объекта, и если это объект, тогда вызывай метод Activate. Т.е. как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
With loExcel.Selection
 r = .Cells.Find("ААААААААААА",,-4123,2,1,1,.F.,,.F.)
 If Vartype(r)='O' Then
  r.Activate

 Endif
Endwith



Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Макрос Word в FoxPro
    #37642587
Макс_П
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос r = .Cells.Find("ААААААААААА",,-4123,2,1,1,.F.,,.F.)
If Vartype(r)='O' Then
r.Activate

Работает!!! Спасибо!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Макрос Word в FoxPro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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