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

プログラミング

C#でプログラムを作っていて以下のエラーが出ました。

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 メソッドが失敗しました

プログラミングの無料レッスン体験

約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp

<Codecampの特徴>

1 現役エンジニアによる指導

2オンラインでのマンツーマン形式の講義

3大手企業にも導入されている実践的なカリキュラム

↓無料体験レッスン実施中です。

プログラミングのオンラインスクールCodeCamp