こんばんは。
過去ログを探しましたが、見当たらなかったので質問させてください。
それぞれデータの入っている、Book1.xls(Sheet1)とBook2.xls(Sheet11)を
Book3.xls(Sheet1,Sheet11)に保存したいと考えています。
同一のファイル内のシートのコピーは出来るのですが、違うファイルの
シートを移す事ができず、'OLE エラー 800A03EC'になってしまいます。
それぞれシート内では関数が入っていますが、他のシートやファイルをまたぐ
関数はありません。無理なのでしょうか?
現在のソースを書き出しました。下記ソース以外でTExcelApplicationを
ExcelApplication1だけにしても同じでした。
長文ではありますが、何かヒントがあれば教えてください。
WinXP(Pro) Delphi7 Ent
var
LCID: Integer;
begin
ExcelApplication1.Connect;
ExcelApplication2.Connect;
try
LCID := LOCALE_USER_DEFAULT;
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Open('C:\Book1.xls',
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0));
ExcelWorkbook2.ConnectTo(ExcelApplication2.Workbooks.Open('C:\Book2.xls',
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0));
//ここでエラー 'OLE エラー 800A03EC'
(ExcelWorkbook1.Sheets['Sheet1'] As ExcelWorksheet).Select(EmptyParam, 0);
//ここでシートをコピーしたい!
(ExcelWorkbook1.Sheets['Sheet1'] As ExcelWorksheet).Copy(
EmptyParam,
ExcelWorkbook2.Sheets['Sheet11'] As ExcelWorksheet,
LCID);
ExcelWorkBook1.SaveAs('C:\Book3.xls',//Filename
Integer(xlNormal), //FileFormat
EmptyParam, //Password
EmptyParam, //WriteResPassword
False, //ReadOnlyRecommended
False, //CreateBackup
xlNoChange, //AccessMode
EmptyParam, //ConflictResolution
EmptyParam, //AddToMru
EmptyParam, //TextCodepage
EmptyParam, //TextVisualLayout
EmptyParam, //Local
LCID); //LCID
finally
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication2.Disconnect;
ExcelApplication2.Quit;
end;
end;
自己レスです。
OpenとConnectToを別に書いて、Item[x]に数字を入れたら上手くいきました。
var
LCID: Integer;
begin
ExcelApplication1.Connect;
try
LCID := LOCALE_USER_DEFAULT;
ExcelApplication1.Workbooks.Open('C:\Book1.xls',
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0);
ExcelApplication1.Workbooks.Open('C:\Book2.xls',
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Item[1]);
ExcelWorkbook2.ConnectTo(ExcelApplication1.Workbooks.Item[2]);
(ExcelWorkbook2.Sheets['Sheet11'] As ExcelWorksheet).Copy(
EmptyParam,
ExcelWorkbook1.Sheets['Sheet10'] As ExcelWorksheet,
LCID);
DeleteFile('C:\Book3.xls');
ExcelWorkBook1.SaveAs('C:\Book3.xls',//Filename
Integer(xlNormal), //FileFormat
EmptyParam, //Password
EmptyParam, //WriteResPassword
False, //ReadOnlyRecommended
False, //CreateBackup
xlNoChange, //AccessMode
EmptyParam, //ConflictResolution
EmptyParam, //AddToMru
EmptyParam, //TextCodepage
EmptyParam, //TextVisualLayout
EmptyParam, //Local
LCID); //LCID
finally
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
end;
end;
ツイート | ![]() |