Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Вопрос к знатокам Microsoft Visual Basic (http://forums.kuban.ru/f1024/vopros_k_znatokam_microsoft_visual_basic-5798961.html)

2225777 11.06.2014 19:22

Вопрос к знатокам 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]

2225777 11.06.2014 19:26

Вот текст скрипта в редакторе
[img]http://s018.radikal.ru/i508/1406/0b/671998768808.jpg[/img]

economist 11.06.2014 20:27

Здесь элементарщина: удалите символы переноса строк _
и будет щастье.

А заодно предложите хотя-б виртуально вырвать яица тому, кто собирает такие длинные текстовые строки в коде. Обычно это делается так:

irf = "Именем Российской Федерации"

sud = irf & chr(13) & "Судебная коллегия Верховного суда Российской Федерации"

sostav = irf & & chr(13) & "В составе судей ..."

В общем смысл понятен... Избегайте длинных строк!

2225777 11.06.2014 20:31

Спасибо за ответ!
Удалить символы переноса строк не могу - так как в итоговом документе текст должен быть не в одну строку :-)
Но за подсказку спасибо!
Вы имеете в виду, что присоединять символы перенос текста надо не знаком "+", а через конкатенацию? Так? :-)

2225777 11.06.2014 20:47

А почему получается такая длинная строка, то это здесь
[url]http://reestr.russiatourism.ru/?ac=view&id_reestr=842[/url]
такие длинные данные, которые автоматически берутся с сайта и автоматически вставляются в документ Word :-)

2225777 11.06.2014 21:33

Вот вся команда. Она создаётся автоматически программой:

[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" - так соединять нельзя? :-)

2225777 11.06.2014 22:14

Всё! Решилось.
Сделали не одну команду Insert с длинной строкой, а пять команд Insert с менее длинными строками...

Ну кто мог знать, что это ЧУДО не принимает длинные строки?????????????????????????????

economist 16.06.2014 13:38

2225777 - ограничения на длину строк есть в ЛЮБОМ языке программирования. Чудо-VBA как раз имеет довольно мало ограничений и прекрасно работает с большимитсроками строками. В коде же длинные строки - зло. Найти ошибку - трудно. Настоящие VBA-программисты почти не используют переноса строк в коде.

Cтроки "str1" & chr(13) & "str2" - так соединять нельзя? - можно и даже нужно.

Помните, что символ переноса строк программного КОДА в редакторе VBA - это подчеркивание _

А строковый символ, заставляющий текстовую строку при выводе/печати переходить на другую строку - это либо Chr(13) либо константа VbCrLf

2225777 16.06.2014 15:45

2 economist
Ещё раз спасибо за помощь! :-)

(И что интересно: бьёшься-бьёшься сам - не получается, только начинаешь спрашивать у кого-то - как в этот же момент и сам понимаешь, в чём дело!
Как будто, когда обращаешься к другому человеку - словно смотришь на свой код его глазами - и видишь причину! Мистика, да и только! :-) :-) :-) )

2225777 18.07.2014 16:26

Новая странность:
а что - есть ограничение на количество команд в одном VB-скрипте?

2225777 18.07.2014 16:32

Среди прочих других команд в одном посыле из 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?

x_05772 29.07.2014 14:10

[quote=economist;35521239]Избегайте длинных строк![/quote]
А также вставляйте текст, а не картинку.


Текущее время: 02:21. Часовой пояс GMT +3.