![]() |
#13 |
Moderator
|
Все. Проблема решена.
X++: COM ExApp,Wbs,Wb,Wss,Ws,Rng; ExApp = new COM("Excel.Application"); ExApp.Visible(True); Wbs = ExApp.Workbooks(); Wb = Wbs.Add(); Wss = Wb.WorkSheets(); Ws = Wss.Add(); Rng = Ws.Range("A1"); Rng.Value2(1); Как я понял: 1. Аксапта не допускает использовать конструкции такого вида "%.%.%" с объектами типа COM, то есть такое выражение следует разбить на два таких "%.%". Если мы нарушаем это правило, то Аксапта ругается - "Таблица находится вне диапазона или не существует". 2. При этом Аксапта на этапе компиляции не проверяет корректность вызываемых методов. То есть мы можем написать: ExApp.ProsoMetod() и Аксапта это откомпилирует, а ошибка появится только во время выполнения. P.S. Если последнюю строку заменить на: Rng.Value(1); то этот вариант перестанет работать в Аксапте, хотя он прекрасно работает в Worde, Delphi и т.д. Не понятно. P.S. Цитата:
rkouznet
Только если tlb импортировано. X++: procedure TForm1.Button1Click(Sender: TObject); var ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData : Variant; begin ExcelApp := CreateOleObject('Excel.Application'); Workbook := ExcelApp.WorkBooks.Add; WorkBook.WorkSheets[1].Cells[1, 1]:='11'; ExcelApp.Visible:=true; end; |
|