Страница 1 из 1

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

Добавлено: 29 Февраль 2016, 8:55
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

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

Добавлено: 29 Февраль 2016, 9:14
finsoftrz
Добрый день.
С Excel лучше работать через OLE или vbscript. DDE довольно медленно и, вроде как, давно считается у MS устаревшим...

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

Добавлено: 29 Февраль 2016, 10:13
kreator
Вы не сказали какой Clarion. Действительно, может оказаться, что "поддержка" DDE закончилась (ну я имею ввиду, что никто больше не проверяет работу данного механизма). С OLE всё нормально, но тоже не быстро. Совсем всё хорошо с прямым формированием экселевского файла, есть продукты для этого. Я, например, экспортирую в Excel через XML, дёшево и сердито.

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

Добавлено: 29 Февраль 2016, 10:37
Yufil
1. Чтобы DDEExecute работало, надо Include ('dde.clw')
2. Список команд DDE надо искать в документации по древним версиям Excel (чуть ли не Excel4), стандартные команды OLE не срабатывают.
3. И - таки, да - в 64-битных системах (по крайней, мере, на одной) DDE не работает.
4. Может быть, ещё жив Tidestone Formula One ActiveX, он намного шустрее Ёкселя и прилично встраивается в экраны Кларион

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

Добавлено: 29 Февраль 2016, 11:00
RaFaeL
Выкиньте DDE оно нормально никогда не работало
Только OLE
Еще рекомендую Taboga Native Excel, файлы Excel 97-2003 отлично формирует

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

Добавлено: 29 Февраль 2016, 11:16
finsoftrz
Если прямой вывод в xls-файлы, то есть хороший опенсорс DExcel, многие пользуются (я в том числе). Только он поддерживает biff4, но для большинства случаев достаточно.
Если работа с Excel, то мне больше нравится работа через vbscript. Работа через OLE имеет ряд ограничений. Через vbscript хорошо работать и с Calc из OpenOffice. Единственная ложка дегтя - на некоторых компьютерах использование скриптов может быть административно отключено, то есть появляется некая внешняя зависимость.

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

Добавлено: 29 Февраль 2016, 12:26
dsabitov
Всем спасибо. Буду разбираться дальше.
Пока мелкософт официально вроде не закрывал тему DDE.
Когда найду как - обязательно отпишусь здесь.
Про "тормознутость" DDE.. Что тут сказать... Может у меня комп быстрый - отчетики формируются очень быстро.
Про DDE.clw - конечно же он включен в проект.

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

Добавлено: 29 Февраль 2016, 14:58
Yufil
Если речь об отчётах - лучше list & label...

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

Добавлено: 29 Февраль 2016, 19:48
dsabitov
Господа!
Нагуглил таки :). Нижняя граница выбранного региона делается следующей "волшебной" командой:

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

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