C++builder 创建range对象时ole error 800a03ec

想利用C++ Builder ole操作excel取值读入数据库

已经可以实现单元格取值 可是效率太低

想尝试range操作取区域一行一列的值放入数组提高效率
可是创建range对象时
运行程序总是报错ole error 800a03ec
代码如下 求解决方案

Variant ExcelApp,Workbook1,Sheet1,Range1,Borders1;

   ExcelApp = Variant::CreateObject ("Excel.Application");

   String strex = "E:\\ha.xlsx";
   ExcelApp.PG("workbooks").FN("open",strex.c_str()) ; //打开工作簿

   ExcelApp.PS("Visible", (Variant)true);//Excel可见

   Workbook1 = ExcelApp.PG("ActiveWorkBook");

   Sheet1 = Workbook1.PG("ActiveSheet");

   String strRange = "A1:E17";
   Range1=Sheet1.PG("Range", strRange.c_str());

多谢妖哥指点迷津 附上妖哥的代码
Variant excelApp = CreateOleObject("Excel.Application");

String xlsFile = L"E:\temp\ccrun\123.xls";
excelApp.OlePropertyGet("Workbooks").OleFunction("open", WideString(xlsFile));

excelApp.OlePropertySet("Visible", True);

Variant workbook = excelApp.OlePropertyGet("ActiveWorkBook");
Variant sheet = workbook.OlePropertyGet("ActiveSheet");

String rangeText = L"A1:E17";
Variant range = sheet.OlePropertyGet("Range", WideString(rangeText));

int rowCount = range.OlePropertyGet("Columns").OlePropertyGet("Count");

ShowMessage(rowCount);