![]() |
Вопрос знатокам VisualBasic - что за мистические dim ? В Delphi7 выполняется обычный код: pchDDECommand := StrAlloc(Length(sDDECommand) + 1); StrPCopy(pchDDECommand, sDDECommand); sDDECommand заполнена командами VisualBasic, в отладке хорошо видно, сто начинается строка со слов WordBasic.FileOpen !!! Запускаем макрос в Word ddeclientCaptain.ExecuteMacro(pchDDECommand, false) и видим ошибку: [img]http://s017.radikal.ru/i424/1502/e0/a05b220f312b.jpg[/img] Что за мистические dim в начале? Кто-нибудь сталкивался с подобным? Хоть в каком направлении копать? :-) |
Приблизительно понятно, в чём дело... Дело в двойных кавычках. Где-то в параметрах команды WordBasic.Insert встретились двойные кавычки - и для стали "переменными"... Хорошо, двойные кавычки " мы удвоим. А угловые кавычки вообще не отображаются в конечном документе вместе со своим содержимым! А как же тогда угловые кавычки «» внести в параметры команды WordBasic.Insert? |
Для справки: dim в VisualBasic обозначает объявление локальной переменной. |
2225777 - на скрине в 14-й строке подсвечен не ASCII-смовол, обозначенный знаком ? - это ошибка. Возможно она следствие грубого копирования текста из чего-то непотребного типа Блокнота... Блокнот - самоя вредная программа и привычка для программистов. Поставьте в Word VBA IDE нормальный простой пропорциональный шрифт (Courier New Cyr) - и будете легко отличать парные, косые и типографские кавычки в тексте кода. У вас в коде ВЕЗДЕ не те кавычки, допустимы ТОЛЬКО простые - " Обычная типографская кавычка - " - CHR(34) Если позарез нужны в параметры команды WordBasic.Insert всунуть разнонаправленные "парные" кавычки, то это коды 147/148, а также "русские"-умолчальные в Word, коды 171, 187. Кстати, парные кавычки даже в самом Word-е неправильно разворачиваются в целом ряде случаев. Поэтому для серьезных дел от них отказываются. Это такой же маразм, как писать инициалы перед ФИО, в то время как везде в компьютерной обработке наоборот. Стандартописателям обоих полов надо вырвать парные органы, чтобы не плодили свои стандарты... |
2 economist: Спасибо большое за Ваши дельные советы! :-) К сожалению, я сама не управляю кавычками именно в среде VisualBasic - код передаётся из Delphi7, а в Delphi - обычная запись: sDDECommand := '[FileOpen "' + sSelectedDoc + '" ][StartOfDocument]' + ... '[EditBookmark .Name = "clientsName02", .Goto][Insert "' + sClnName + '"]' + '[ViewPage]' + sCommandDate + sCommandFileSave; То есть, просто ввожу в строке, заключаемой в одинарные кавычки, - двойные кавычки с клавиатуры. А насчёт символов 171 и 187 вот на такой код из Delphi7 str:= StringReplace(str, '«', '" + Chr(171) + "', [rfReplaceAll]); str:= StringReplace(str, '»', '" + Chr(187) + "', [rfReplaceAll]); товарищ VisualBasic сказал вот это :-) [img]http://s015.radikal.ru/i332/1502/3f/382c9ae2ceb1.jpg[/img] |
На скрине не видно подсвечивание ошибки: это Chr___(171) и Chr___(187)... Как же тогда написать, чтобы функция Chr перестала быть неопределённой? :-) |
Мдя, вот изврат-то какой в исполнении программистов: вставлять кодом на Delphi код VBA, и при этом еще и парсить его криво. Впрочем, дельфийских поделок вокруг столько, что проще переделать систему сбора заявок на чистом VBA (я бы так поступил). У вас не работает код потому что неправильно вставился код функций - нельзя ____ ! Просто Chr(171) и Chr(187) И еще раз подумайте - нахрена вам парность кавычек? Что за антиинформационный перфекционизм? Ставьте обычные в выражении вот так: "Адрес: " & "Ул. Мира, д. 5, корпус ""б""" Получится вот так: Адрес: Ул. Мира, д. 5, корпус "б" И еще - замените все косые кавычки в коде на ровные, как зубы у зайца - " И попробуйте в Delphi str:= StringReplace(str, '«', '""', [rfReplaceAll]); или str:= StringReplace(str, '«', '"', [rfReplaceAll]); |
Чтобы видеть в Форуме код как код, моноширинным грифтом - его надо заключить в теги: [code] [code] str:= StringReplace(str, '«', '"', [rfReplaceAll]); [/code] [/code] |
теги code /code все в квадратных скобках |
Текущее время: 04:23. Часовой пояс GMT +3. |