imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 22.09.2005, 14:55     # 1
vuk
Member
 
Регистрация: 12.04.2003
Сообщения: 213

vuk Известность не заставит себя ждатьvuk Известность не заставит себя ждать
длинна строки в переменных макросов 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 слишком длинный строковый параметр."
каким образом энто дело обойти можно?

З.Ы.: звиняйте что код не выделен - админ яву отрубил.
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно.
vuk вне форума  
Старый 22.09.2005, 19:40     # 2
SapeR
::VIP::
 
Регистрация: 17.12.2002
Адрес: Q-ata, Israel
Сообщения: 310

SapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царствеSapeR Луч света в тёмном царстве
сам определяй что текст слишком длинный
и ищи его по частям
SapeR вне форума  
Старый 23.09.2005, 11:00     # 3
vuk
Member
 
Регистрация: 12.04.2003
Сообщения: 213

vuk Известность не заставит себя ждатьvuk Известность не заставит себя ждать
длиннный не искомый/заменяемый текст, а текст содержащийся в переменной...
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно.
vuk вне форума  
Старый 23.09.2005, 13:05     # 4
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
есть несколько способов...
один -- вставить текст для замены в буффер обмена и затем присвоить
.Replacement.Text = "^c"
можно просто найти текст ( без замены ) а потом вставить текст замены в это место...
dyr_farot вне форума  
Старый 23.09.2005, 14:10     # 5
vuk
Member
 
Регистрация: 12.04.2003
Сообщения: 213

vuk Известность не заставит себя ждатьvuk Известность не заставит себя ждать
вариантны интересные, но не совсем подходят, т.к. идея макроса в автоматизации а ctrl+c можно и ручками делать.
Вообще я думал что есть в ВБ разные типы переменных, и по дефолту объявляются те в которых длинна строки не может превышать определенное кол-во символов, но если это не так, то остается второй вариант, только автоматический, т.е. скрипт ищет заменяемый текст, меняет его на пустое место, перемещает туда курсор и вставляет переменную с первой частью, потом второй ... потом n-ой...
хм, только так? каким методом это делается?
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно.
vuk вне форума  
Старый 23.09.2005, 14:16     # 6
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
в смысле?
.Replacement.Text = "^c" заставит макрос вставить текст из буффера ( вручную нажимать ничего не придется )
длина Replacement.Text ограничена 255 символами...

а чем не нравится второй вариант?
dyr_farot вне форума  
Старый 23.09.2005, 14:41     # 7
vuk
Member
 
Регистрация: 12.04.2003
Сообщения: 213

vuk Известность не заставит себя ждатьvuk Известность не заставит себя ждать
vuk писал: "и штук шесть таких операций проходит с разными переменнными"
поэтому ctrl+c не подходит в буфере то только содержание одной переменной может находиться
второй вариант просто не очень красивый какой-то 9-), но видимо придётся использовать его, дык какой коммандой сначала переместить курсор к нужному месту, и какой вставить текст из переменной на место курсора?
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно.
vuk вне форума  
Старый 23.09.2005, 14:51     # 8
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
так в txtopf + " """ + company + """" тоже содержимое только одной переменной может храниться. в чем проблема то?

искать точно также, только .Replacement.Text = ""
и после поиска Selection.Text = ...
потом поиск повторить ( если возможны повторные вхождения )
dyr_farot вне форума  
Старый 23.09.2005, 15:14     # 9
vuk
Member
 
Регистрация: 12.04.2003
Сообщения: 213

vuk Известность не заставит себя ждатьvuk Известность не заставит себя ждать
1. vuk писал "выводится формочка", т.е. в форму вбивается (отмечается галочкой, выбирается из выпадающего меню) нужное значение, полей в форме не одно и как минимум 2 из них (содержащих разные данные) длиннее чем разрешил Билли ("640Кб должно быть достаточно для всего" ох уж мне эти пророчества %) )а в буфер скопировать можно только значение....
2. вот, в споре рождается истина - форум заставляет серое вещество шевелиться, тогда делаем реплейс не просто текста переменной а имя_переменной + "!заменяемый!" (маркер места замены) повторяем операцию скока надо потом просто удаляем маркер, во как! 9-)
ещё один масенький вопросик - какая функция считает количество символов в строковой переменной, какая разбивает переменные (хоть на две разные хоть в массив преобразует)?
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно.
vuk вне форума  
Старый 23.09.2005, 15:27     # 10
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
я что-то так и не понял проблемы...
у тебя есть текст, который нужно заменить в файле. у тебя есть текст на который нужно заменить ( он формируется из нескольких строковых переменных путем их сложения ). так?


длина строки -- Len()
подстроки -- Right$(откуда, сколько символов)/Left$()/Mid()
dyr_farot вне форума  
Старый 23.09.2005, 16:27     # 11
vuk
Member
 
Регистрация: 12.04.2003
Сообщения: 213

vuk Известность не заставит себя ждатьvuk Известность не заставит себя ждать
не совсем, текст который нужно заменить указан в документе "маркерами" типа "!заменяемый!" "!заменяемый1!" и т.п. текст которым нужно заменить для каждого маркера свой, иногда он умещается в одну переменную, иногда складываются две...
__________________
Чтобы сделать что-то невозможное, надо не знать, что это - невозможно.
vuk вне форума  
Старый 23.09.2005, 16:41     # 12
dyr_farot
Advanced Member
 
Регистрация: 23.08.2003
Сообщения: 442

dyr_farot Нимб уже пробиваетсяdyr_farot Нимб уже пробивается
сути это не меняет: есть текст, есть заменяющий текст. все.

в чем проблема сформировать заменяющий текст, вставить его в буффер. и заставить вставится в документ?
также как найти замещаемый текст и вставить на его место заменяющий ...
dyr_farot вне форума  

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 23:54.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.