Range クラスの Select プロパティを取得できません

シェアする

  • このエントリーをはてなブックマークに追加

スポンサードリンク

Range クラスの Select プロパティを取得できません

C#でExcelのあるシートから別のシートへカット・アンド・ペーストするプログラムを作っています。

Range range1 = sheet.Range[“A1”, “B1”];
sheet.Copy(Type.Missing);
Range range2 = sheet2.cells(10, 10);
range2.Select();
sheet2.Paste(Type.Missing, Type.Missing);

うまくできたと思って実行すると以下のエラーが表示されます。

[System.Runtime.InteropServices.COMException]    {System.Runtime.InteropServices.COMException (0x800A03EC): Range クラスの Select プロパティを取得できません。
System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)
CallSite.Target(Closure , CallSite , ComObject )
CallSite.Target(Closure , CallSite , Object )

スポンサードリンク

Range クラスの Select プロパティが取得できないエラーの回避方法

調査してみると、RangeをSelectする前に、SheetをActivateする必要があるようです。

具体的には以下の通りに追加すると解決できました。

Range range1 = sheet.Range[“A1”, “B1”];
sheet.Copy(Type.Missing);
sheet2.Activate();
Range range2 = sheet2.cells(10, 10);
range2.Select();
sheet2.Paste(Type.Missing, Type.Missing);

ちなみに、RangeにもCellにもActivateメソッドがありますが、SheetをActivateしないといけないようです。

同様のエラーとして以下がありますが、どれも同じ原因と考えられます。

  • range クラスの select メソッドが失敗しました
  • range クラスの pastespecial メソッドが失敗しました
  • range クラスの autofill メソッドが失敗しました
  • range クラスの activate メソッドが失敗しました
  • range クラスの insert メソッドが失敗しました
  • range クラスの sort メソッドが失敗しました
  • range クラスの autofilter メソッドが失敗しました

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です