EXCELの異なるブック間のシートコピーエラー

解決


yukkie  2013-12-28 22:34:57  No: 45795  IP: [192.*.*.*]

こんにちは

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);
に変更しても結果変わらず

以上ですが、これについてどなたかご教示いただけないでしょうか。
よろしくお願いします。

編集    削除
KHE00221  2013-12-29 01:15:26  No: 45796  IP: [192.*.*.*]

試してないけど
これだと aBook bBook 別プロセスになるよね

編集    削除
yukkie  2013-12-31 01:59:43  No: 45797  IP: [192.*.*.*]

KHE00221さん

  ヒント..と言うか、答えをありがとうございました。
  ご指摘の通り、aobj,bObjを止めて、ひとつのobjにして
うまくいきました。
  年の瀬になりますが、良いお年を

編集    削除