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大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント