往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;
uj5u.com熱心網友回復:
實^驗了一下,沒有問^題。
只要 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實體。
(非^法詞組,無法發表?)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/88809.html
