![]() |
длинна строки в переменных макросов 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 слишком длинный строковый параметр." каким образом энто дело обойти можно? З.Ы.: звиняйте что код не выделен - админ яву отрубил. |
сам определяй что текст слишком длинный
и ищи его по частям :) |
длиннный не искомый/заменяемый текст, а текст содержащийся в переменной...
|
есть несколько способов...
один -- вставить текст для замены в буффер обмена и затем присвоить .Replacement.Text = "^c" можно просто найти текст ( без замены ) а потом вставить текст замены в это место... |
вариантны интересные, но не совсем подходят, т.к. идея макроса в автоматизации а ctrl+c можно и ручками делать.
Вообще я думал что есть в ВБ разные типы переменных, и по дефолту объявляются те в которых длинна строки не может превышать определенное кол-во символов, но если это не так, то остается второй вариант, только автоматический, т.е. скрипт ищет заменяемый текст, меняет его на пустое место, перемещает туда курсор и вставляет переменную с первой частью, потом второй ... потом n-ой... хм, только так? :( каким методом это делается? |
в смысле?
.Replacement.Text = "^c" заставит макрос вставить текст из буффера ( вручную нажимать ничего не придется ) длина Replacement.Text ограничена 255 символами... а чем не нравится второй вариант? |
vuk писал: "и штук шесть таких операций проходит с разными переменнными"
поэтому ctrl+c не подходит в буфере то только содержание одной переменной может находиться :( второй вариант просто не очень красивый какой-то 9-), но видимо придётся использовать его, дык какой коммандой сначала переместить курсор к нужному месту, и какой вставить текст из переменной на место курсора? |
так в txtopf + " """ + company + """" тоже содержимое только одной переменной может храниться. в чем проблема то?
искать точно также, только .Replacement.Text = "" и после поиска Selection.Text = ... потом поиск повторить ( если возможны повторные вхождения ) |
1. vuk писал "выводится формочка", т.е. в форму вбивается (отмечается галочкой, выбирается из выпадающего меню) нужное значение, полей в форме не одно и как минимум 2 из них (содержащих разные данные) длиннее чем разрешил Билли ("640Кб должно быть достаточно для всего" ох уж мне эти пророчества %) )а в буфер скопировать можно только значение....
2. вот, в споре рождается истина - форум заставляет серое вещество шевелиться, тогда делаем реплейс не просто текста переменной а имя_переменной + "!заменяемый!" (маркер места замены) повторяем операцию скока надо потом просто удаляем маркер, во как! 9-) ещё один масенький вопросик - какая функция считает количество символов в строковой переменной, какая разбивает переменные (хоть на две разные хоть в массив преобразует)? |
я что-то так и не понял проблемы...
у тебя есть текст, который нужно заменить в файле. у тебя есть текст на который нужно заменить ( он формируется из нескольких строковых переменных путем их сложения ). так? длина строки -- Len() подстроки -- Right$(откуда, сколько символов)/Left$()/Mid() |
не совсем, текст который нужно заменить указан в документе "маркерами" типа "!заменяемый!" "!заменяемый1!" и т.п. текст которым нужно заменить для каждого маркера свой, иногда он умещается в одну переменную, иногда складываются две...
|
сути это не меняет: есть текст, есть заменяющий текст. все.
в чем проблема сформировать заменяющий текст, вставить его в буффер. и заставить вставится в документ? также как найти замещаемый текст и вставить на его место заменяющий ... |
| Часовой пояс GMT +4, время: 23:54. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.