Вопрос по работе с EXCEL

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Вопрос по работе с EXCEL

Сообщение dsabitov »

Всем доброго дня!

Вывожу данные в excel.
Все в порядке, зря раньше не пользовался.
Вроде как в help-е заявлено, что с помощью DDEEXECUTE можно выполнять чуть ли не команды Visual Basic (те, что используются в макросах).
Вот выдержка из Clarion Help: The Excel command string enclosed by the square brackets is an Excel macro statement. Excel, and many other applications allow you to send a macro statement via the DDEEXECUTE statement. In this particular case, you don't have to know the name of the open Excel file to execute the statement.

Мне нужно подчеркнуть выделенную ячейку (создать нижнюю границу).
В excel это делается, например, командой:
Selection.Borders(9).LineStyle = 1

Почему же мой код ничего не подчеркивает? :)

Код: Выделить всё

        EXCEL:Name='C:\Clario Projects\course-into-text\report1.xls'
        RUN('"'&TRIM(EXCEL:Name)&'"')
        ! GET DDE CHANNEL THREE TIMES 
        LOOP 3 TIMES
            Channel = DDECLIENT('Excel',TRIM(EXCEL:Name))
        END
        IF Channel < 1 THEN
            MESSAGE('Ошибка установки связи с EXCEL!')
            RETURN(0)
        END
        DDEPOKE(Channel,'R1C3',FORMAT(REPORT:Date,@d6.)) ! Работает
        DDEEXECUTE(Channel,'[SELECT("R1C2:R1C3")]') ! Работает
        DDEEXECUTE(Channel,'[Selection.Borders(9).LineStyle = 1]') ! НЕ РАБОТАЕТ
        MESSAGE(ERROR(),,,,,MSGMODE:CANCOPY)
        DDECLOSE(Channel)
Ошибка из MESSAGE: DDEexecute - invalid command

Clarion 10
Последний раз редактировалось dsabitov 29 Февраль 2016, 9:18, всего редактировалось 1 раз.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5321
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Вопрос по работе с EXCEL

Сообщение finsoftrz »

Добрый день.
С Excel лучше работать через OLE или vbscript. DDE довольно медленно и, вроде как, давно считается у MS устаревшим...
C6/C12, ШВС, tps/btrieve.
kreator
✯ Ветеран ✯
Сообщения: 5190
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Вопрос по работе с EXCEL

Сообщение kreator »

Вы не сказали какой Clarion. Действительно, может оказаться, что "поддержка" DDE закончилась (ну я имею ввиду, что никто больше не проверяет работу данного механизма). С OLE всё нормально, но тоже не быстро. Совсем всё хорошо с прямым формированием экселевского файла, есть продукты для этого. Я, например, экспортирую в Excel через XML, дёшево и сердито.
We are hard at work… for you. :)
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Вопрос по работе с EXCEL

Сообщение Yufil »

1. Чтобы DDEExecute работало, надо Include ('dde.clw')
2. Список команд DDE надо искать в документации по древним версиям Excel (чуть ли не Excel4), стандартные команды OLE не срабатывают.
3. И - таки, да - в 64-битных системах (по крайней, мере, на одной) DDE не работает.
4. Может быть, ещё жив Tidestone Formula One ActiveX, он намного шустрее Ёкселя и прилично встраивается в экраны Кларион
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1412
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Вопрос по работе с EXCEL

Сообщение RaFaeL »

Выкиньте DDE оно нормально никогда не работало
Только OLE
Еще рекомендую Taboga Native Excel, файлы Excel 97-2003 отлично формирует
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 5321
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 12 раз
Поблагодарили: 65 раз

Вопрос по работе с EXCEL

Сообщение finsoftrz »

Если прямой вывод в xls-файлы, то есть хороший опенсорс DExcel, многие пользуются (я в том числе). Только он поддерживает biff4, но для большинства случаев достаточно.
Если работа с Excel, то мне больше нравится работа через vbscript. Работа через OLE имеет ряд ограничений. Через vbscript хорошо работать и с Calc из OpenOffice. Единственная ложка дегтя - на некоторых компьютерах использование скриптов может быть административно отключено, то есть появляется некая внешняя зависимость.
C6/C12, ШВС, tps/btrieve.
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Вопрос по работе с EXCEL

Сообщение dsabitov »

Всем спасибо. Буду разбираться дальше.
Пока мелкософт официально вроде не закрывал тему DDE.
Когда найду как - обязательно отпишусь здесь.
Про "тормознутость" DDE.. Что тут сказать... Может у меня комп быстрый - отчетики формируются очень быстро.
Про DDE.clw - конечно же он включен в проект.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Вопрос по работе с EXCEL

Сообщение Yufil »

Если речь об отчётах - лучше list & label...
dsabitov
Посетитель
Сообщения: 44
Зарегистрирован: 02 Апрель 2011, 12:30

Вопрос по работе с EXCEL

Сообщение dsabitov »

Господа!
Нагуглил таки :). Нижняя граница выбранного региона делается следующей "волшебной" командой:

Код: Выделить всё

DDEEXECUTE(Channel,'[BORDER(,,,,1)]')
В моем случае MS Office 2010, Win7 x64, Clarion 10.
Ответить