往Excel文件里 装入图片,有多个工作表Sheet 时,在红色代码地方报错 OLE error 800A03EC ,导致图片装入不成功
var ExcelApp:Variant;
WorkBookName:string;
Try
WorkBookName := ExtractFileName(lsExcelFile); SheetName := EjunSheet.SheetName ; if SheetName = '' then
SheetName := 'Sheet1'; try
ExcelApp := GetActiveOleObject('Excel.Application');
except
ExcelApp := CreateOleObject('Excel.Application');
end; ExcelApp.Workbooks.Open(lsExcelFile);
lsPicName := 'd:\image.jpg';
ExcelApp.Workbooks[WorkBookName].Worksheets[SheetName].Shapes.AddPicture(
lsPicName,True, True,50, 50,200, 200);
ExcelApp.ActiveWorkBook.Save; ExcelApp.WorkBooks.Close; ExcelApp.Quit; except on e:exception do
Begin
WriteErrorToTxt('ExcelApp :'+e.Message);
ExcelApp.WorkBooks.Close; ExcelApp.Quit;
End;
End;
var ExcelApp:Variant;
WorkBookName:string;
Try
WorkBookName := ExtractFileName(lsExcelFile); SheetName := EjunSheet.SheetName ; if SheetName = '' then
SheetName := 'Sheet1'; try
ExcelApp := GetActiveOleObject('Excel.Application');
except
ExcelApp := CreateOleObject('Excel.Application');
end; ExcelApp.Workbooks.Open(lsExcelFile);
lsPicName := 'd:\image.jpg';
ExcelApp.Workbooks[WorkBookName].Worksheets[SheetName].Shapes.AddPicture(
lsPicName,True, True,50, 50,200, 200);
ExcelApp.ActiveWorkBook.Save; ExcelApp.WorkBooks.Close; ExcelApp.Quit; except on e:exception do
Begin
WriteErrorToTxt('ExcelApp :'+e.Message);
ExcelApp.WorkBooks.Close; ExcelApp.Quit;
End;
End;
实^验了一下,没有问^题。只要 WorkBookName,SheetName,图片路^径 正确,正确执行插入图片,代^码没问^题该错^误的解释:
http://stackoverflow.com/questions/2355998/ole-800a03ec-error-when-using-texcelworkbook-saveas-method-in-delphi-7
翻译:
我在自动化Excel时遇到过一次。这件事发生时,当时用户处于一个单元格的编辑模式,而你想要自动化该excel实例。 Excel不喜^欢^正在编辑一个单元格时其他程^序背^后动^用它。因此,这是发生了什么事,当你的客^户(我^认^为):在Excel中打开并编辑单元格(选择一个单元格,然后按F2)
你的^代^码^开^始:
创^建^一^个TExcelApplication并访问工作簿属^性。由于您的Excel应用程序尚未连接调^用TOleServer.Connect(看GetDefaultInterface的实 现)
由^于^默^认connectkind是ckRunningOrNew,TExcelApplication连接到正在运行的实例。
由于客^户编辑一个单元格,你得到的Open方法错^误。
你可以如何防^止这种情况:你TExcelApplication到ckNewInstance的设置ConnectKind所以你总^是工^作在一个单^独的Excel实例。
(非^法词组,无法发表?)