往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;

解决方案 »

  1.   


    实^验了一下,没有问^题。只要 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实例。
    (非^法词组,无法发表?)