こんにちは
EXCELの異なるブック間のシートコピーが上手くいきません。
BooK-Aの2枚めのシートをBook-Bの3枚めの後に追加しようと
しているのですが、下記のソースで起動するとcopyの箇所で
「例外クラスEOleException(メッセージ'Worksheetクラスの
Copyメソッドが失敗しました。')」が発生します。
シート数はABともに3シートです
var
aObj, aBook, aSheet: Variant;
bObj, bBook, bSheet: Variant;
begin
aObj := CreateOleObject('Excel.Application');
aBook := aObj.WorkBooks.Open('c:\tmp\a.xls');
bObj := CreateOleObject('Excel.Application');
bBook := bObj.WorkBooks.Open('c:\tmp\b.xls');
aSheet := aBook.WorkSheets[2];
aSheet.Activate; //これは不要かも
bSheet := bBook.WorkSheets[3];
aSheet.Copy(EmptyParam,bSheet); //ここでエラー
//以下、quitと変数の終了処理
end;
以下の試行錯誤をしてみました。
1)CopyをMoveに変更したが結果変わらず
2)aSheet,bSheetの間接指定をやめて、直接Copy部分に
aBook.WorkSheets[2]などに変更したが、結果変わらず
3)仕様は変わりますが、エラー行をaSheet.Copy(bSheet);
に変更しても結果変わらず
以上ですが、これについてどなたかご教示いただけないでしょうか。
よろしくお願いします。
試してないけど
これだと aBook bBook 別プロセスになるよね
KHE00221さん
ヒント..と言うか、答えをありがとうございました。
ご指摘の通り、aobj,bObjを止めて、ひとつのobjにして
うまくいきました。
年の瀬になりますが、良いお年を