| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 12.04.2003
Сообщения: 213
![]() ![]() |
длинна строки в переменных макросов Word
Начал копаться в visual basic для макросов MS Word, с грехом пополам накатал такой макрос:
после запуска выводится формочка sub macros Load forma forma.show end sub форма заполняется, и на кнопке "ОК" висит такая функция Private Sub Start_Click() txtopf = "какой-то текст" With Selection.Find .Text = "!заменяемый!" .Replacement.Text = txtopf + " """ + company + """" ' где company переменная с содержимым поля формы (= имя поля) End With Selection.Find.Execute Replace:=wdReplaceAll ' и штук шесть таких операций проходит с разными переменнными forma.Hide End Sub т.е. скрипт ищет в документе заранее помеченный текст и заменяет его на содержимое переменных. Так вот если в поле company ввести длинный текст (или в переменную opf загнать длинный текст) то при исполнении он мне выдает "Run-time Error 5854 слишком длинный строковый параметр." каким образом энто дело обойти можно? З.Ы.: звиняйте что код не выделен - админ яву отрубил.
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно. |
|
|
|
|
# 5 |
|
Member
Регистрация: 12.04.2003
Сообщения: 213
![]() ![]() |
вариантны интересные, но не совсем подходят, т.к. идея макроса в автоматизации а ctrl+c можно и ручками делать.
Вообще я думал что есть в ВБ разные типы переменных, и по дефолту объявляются те в которых длинна строки не может превышать определенное кол-во символов, но если это не так, то остается второй вариант, только автоматический, т.е. скрипт ищет заменяемый текст, меняет его на пустое место, перемещает туда курсор и вставляет переменную с первой частью, потом второй ... потом n-ой... хм, только так? каким методом это делается?
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно. |
|
|
|
|
# 7 |
|
Member
Регистрация: 12.04.2003
Сообщения: 213
![]() ![]() |
vuk писал: "и штук шесть таких операций проходит с разными переменнными"
поэтому ctrl+c не подходит в буфере то только содержание одной переменной может находиться ![]() второй вариант просто не очень красивый какой-то 9-), но видимо придётся использовать его, дык какой коммандой сначала переместить курсор к нужному месту, и какой вставить текст из переменной на место курсора?
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно. |
|
|
|
|
# 8 |
|
Advanced Member
Регистрация: 23.08.2003
Сообщения: 442
![]() ![]() |
так в txtopf + " """ + company + """" тоже содержимое только одной переменной может храниться. в чем проблема то?
искать точно также, только .Replacement.Text = "" и после поиска Selection.Text = ... потом поиск повторить ( если возможны повторные вхождения ) |
|
|
|
|
# 9 |
|
Member
Регистрация: 12.04.2003
Сообщения: 213
![]() ![]() |
1. vuk писал "выводится формочка", т.е. в форму вбивается (отмечается галочкой, выбирается из выпадающего меню) нужное значение, полей в форме не одно и как минимум 2 из них (содержащих разные данные) длиннее чем разрешил Билли ("640Кб должно быть достаточно для всего" ох уж мне эти пророчества %) )а в буфер скопировать можно только значение....
2. вот, в споре рождается истина - форум заставляет серое вещество шевелиться, тогда делаем реплейс не просто текста переменной а имя_переменной + "!заменяемый!" (маркер места замены) повторяем операцию скока надо потом просто удаляем маркер, во как! 9-) ещё один масенький вопросик - какая функция считает количество символов в строковой переменной, какая разбивает переменные (хоть на две разные хоть в массив преобразует)?
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно. |
|
|
|
|
# 10 |
|
Advanced Member
Регистрация: 23.08.2003
Сообщения: 442
![]() ![]() |
я что-то так и не понял проблемы...
у тебя есть текст, который нужно заменить в файле. у тебя есть текст на который нужно заменить ( он формируется из нескольких строковых переменных путем их сложения ). так? длина строки -- Len() подстроки -- Right$(откуда, сколько символов)/Left$()/Mid() |
|
|
|
|
# 11 |
|
Member
Регистрация: 12.04.2003
Сообщения: 213
![]() ![]() |
не совсем, текст который нужно заменить указан в документе "маркерами" типа "!заменяемый!" "!заменяемый1!" и т.п. текст которым нужно заменить для каждого маркера свой, иногда он умещается в одну переменную, иногда складываются две...
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно. |
|
|
|
|
# 12 |
|
Advanced Member
Регистрация: 23.08.2003
Сообщения: 442
![]() ![]() |
сути это не меняет: есть текст, есть заменяющий текст. все.
в чем проблема сформировать заменяющий текст, вставить его в буффер. и заставить вставится в документ? также как найти замещаемый текст и вставить на его место заменяющий ... |
|
|