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

Добавлено: 22 авг 2004, 23:09
Naeel Maqsudov
Какая версия Delphi?
(Просто есть несколько путей: либо CreateObject и работать с книгой, либо работать с компонентами, которые появились в D4 и модифицировались.)

По свойствам и методам объектов MsOffice сведения можно почерпнуть их справки по VBA, а также в форуме по VBA.

При переводе VBA в D есть некоторые особенности, например круглые скобки после обращения к коллекциям и массивам превращаются в квадратные; передачи аргументов по имени ессно не бывает и т.п.

И вообще, AiK, давай эту тему в Delphi перенесем.

Delphi&Excel

Добавлено: 24 авг 2004, 16:31
Alexxx
Delphi 5.0 Excel 2000

Да все это понятно, мне бы кусочек кода
как это делается я и так знаю

RExcel := CreateOLEObject('Excel.Application');
RExcel.Visible := True; //
RWorkBook := RExcel.WorkBooks.Open('Alex.xls');
FSheet := RWorkBook.Sheets['Alex']

FSheet.Cells[2, 'E'] := '=SUM(E6:E12000'; // РАБОТАЕТ!

FSheet.Cells[2, 'E'] := '=суммесли( ... )'; // не работает
FSheet.Cells[2, 'E'] := '=sumif( ... )'; // не работает
FSheet.Cells[2, 'E'].Value := '=суммесли( ... )'; // не работает
FSheet.Cells[2, 'E'].Formula := '=суммесли( ... )'; // не работает

Вот как в VBA копируется лист

Sheets("Лист1").Select
Sheets("Лист1").Copy Before:=Sheets(1)

а как это на делфи?

Добавлено: 26 авг 2004, 00:54
Naeel Maqsudov
FSheet.Cells[2, 'E'] := '=суммесли( ... )'; // не работает
FSheet.Cells[2, 'E'] := '=sumif( ... )'; // не работает
FSheet.Cells[2, 'E'].Value := '=суммесли( ... )'; // не работает
FSheet.Cells[2, 'E'].Formula := '=суммесли( ... )'; // не работает
Во-первых, рекомендую
FSheet.Cells[2, 'E'].Formula при этом назания функций типа CУММЕСЛИ надо заменить на соответствующие английский. Поищите у себя в дебрях /Program Files/Microsoft Office файл Funcs.xls там есть ВСЕ функции.

Если хотите использовать русские названия, то используйте FormulaLocal вместо Formula. Но учтите, что Ваша программа не сможет работать с нерусским Офисом.

Во-вторых, есть разница между Formula и FormulaR1C1. Почитайте справку по VBA. Вопросы задавайте на соответствующей доске (по вопросам VB(A))

Добавлено: 26 авг 2004, 01:02
Naeel Maqsudov
Вот как в VBA копируется лист

Sheets("Лист1").Select
Sheets("Лист1").Copy Before:=Sheets(1)

а как это на делфи?
Думаю так:
RWorkBook.Sheets['Лист1'].Copy(RWorkBook.Sheets[1])

Старайтесь не использовать Select или Activate, а обращайтесь к объектам НАПРЯМУЮ, если не перемещать фокус, то все будет работать быстрее.

Спасибо!

Добавлено: 27 авг 2004, 12:44
Alexxx
Спасибо, все именно так и работает
Александр