![]() |
Вопрос к знатокам Microsoft Visual Basic Вопрос к знатокам Microsoft Visual Basic или к тем, кто пишет макросы для Microsoft Word!!!!!!! Прилагаю скрины скрпита. Скажите ради Бога - ЧТО-О-О-О ему здесь не подходит????????? В чём ошибка? Почему он после слов "Финансовое обеспечение на новый период" (второй скрин) перед знаком Chr(13) - начал рисовать красным? Что в этом месте не так? Ведь этот знак раньше много раз прекрасно воспринялся... Сижу уже несколько дней..... :-( [img]http://s019.radikal.ru/i644/1406/59/d2593a2c4963.jpg[/img] [img]http://s020.radikal.ru/i714/1406/92/72fe098d3177.jpg[/img] |
Вот текст скрипта в редакторе [img]http://s018.radikal.ru/i508/1406/0b/671998768808.jpg[/img] |
Здесь элементарщина: удалите символы переноса строк _ и будет щастье. А заодно предложите хотя-б виртуально вырвать яица тому, кто собирает такие длинные текстовые строки в коде. Обычно это делается так: irf = "Именем Российской Федерации" sud = irf & chr(13) & "Судебная коллегия Верховного суда Российской Федерации" sostav = irf & & chr(13) & "В составе судей ..." В общем смысл понятен... Избегайте длинных строк! |
Спасибо за ответ! Удалить символы переноса строк не могу - так как в итоговом документе текст должен быть не в одну строку :-) Но за подсказку спасибо! Вы имеете в виду, что присоединять символы перенос текста надо не знаком "+", а через конкатенацию? Так? :-) |
А почему получается такая длинная строка, то это здесь [url]http://reestr.russiatourism.ru/?ac=view&id_reestr=842[/url] такие длинные данные, которые автоматически берутся с сайта и автоматически вставляются в документ Word :-) |
Вот вся команда. Она создаётся автоматически программой: [EditBookmark .Name = "TourOperatorData", .Goto][Insert "Реестровый номер: МТ1 000870" & chr(13) & "Полное наименование: Общество с ограниченной ответственностью САНМАР ТУР" & chr(13) & "Сокращенное наименование: ООО САНМАР ТУР" & chr(13) & "Адрес (место нахождения): 105066, г. Москва, ул. Нижняя Красносельская, д. 40/12, корпус 20, 1 этаж" & chr(13) & "Почтовый адрес: 105066, г. Москва, ул. Нижняя Красносельская, д. 40/12, корпус 20, 1 этаж" & chr(13) & "Адрес официального сайта в сети Интернет: www.sunmar.ru" & chr(13) & "."] Но строки "str1" & chr(13) & "str2" - так соединять нельзя? :-) |
Всё! Решилось. Сделали не одну команду Insert с длинной строкой, а пять команд Insert с менее длинными строками... Ну кто мог знать, что это ЧУДО не принимает длинные строки????????????????????????????? |
2225777 - ограничения на длину строк есть в ЛЮБОМ языке программирования. Чудо-VBA как раз имеет довольно мало ограничений и прекрасно работает с большимитсроками строками. В коде же длинные строки - зло. Найти ошибку - трудно. Настоящие VBA-программисты почти не используют переноса строк в коде. Cтроки "str1" & chr(13) & "str2" - так соединять нельзя? - можно и даже нужно. Помните, что символ переноса строк программного КОДА в редакторе VBA - это подчеркивание _ А строковый символ, заставляющий текстовую строку при выводе/печати переходить на другую строку - это либо Chr(13) либо константа VbCrLf |
2 economist Ещё раз спасибо за помощь! :-) (И что интересно: бьёшься-бьёшься сам - не получается, только начинаешь спрашивать у кого-то - как в этот же момент и сам понимаешь, в чём дело! Как будто, когда обращаешься к другому человеку - словно смотришь на свой код его глазами - и видишь причину! Мистика, да и только! :-) :-) :-) ) |
Новая странность: а что - есть ограничение на количество команд в одном VB-скрипте? |
Среди прочих других команд в одном посыле из Delphi в документ Microsoft Word'а есть последовательность, заполняющая таблицу: [TableInsertRowBelow] [NextCell][Insert "4"] [NextCell][Insert "111"] [NextCell][Insert "111"] [NextCell][Insert "111"] [NextCell][Insert "111"] [NextCell][Insert "222"] ("111" вставляются в тестовых целях). Документ создаётся прекрасно, если задано повторение этого блока команд 6 раз. И не создаётся, если задано повторение этого блока 7 раз. Никакой ошибки. Просто открывается белый чистый лист. Если в вышеуказанной последовательности команд убрать последнюю команду [NextCell][Insert "222"] то теперь семь строк таблицы создаётся в документе! Но не создаётся 8 и больше. Напрашивается вывод только один: есть ограничение на количество команд, за один раз посылаемых в Microsoft Word? |
[quote=economist;35521239]Избегайте длинных строк![/quote] А также вставляйте текст, а не картинку. |
Текущее время: 19:20. Часовой пояс GMT +3. |