スプレッドシート内のすべてのシートを反復処理すると、次のエラー メッセージが表示されました:
「Microsoft.Office.Interop.Excel.Worksheet」型に透過プロキシをキャストできません。
このスプレッドシートには、明らかにシートにキャストできないグラフ タブがいくつかあります。したがって、このコードを実行すると、上記のエラーが発生します。
foreach (Microsoft.Office.Interop.Excel.Worksheet activeSheet in xlApp.Sheets)
{
}
私は解決策を見つけるために周りを見回しましたが、何人かの人々がそれに遭遇しました-私にとっては別のシナリオです 。 4e6a-84dc-7f8a9440fe0a
これまでの回避策に満足していません。例外は例外的に使用する必要があると思いますが、これはそれらの場所の1つではありません:
for (int i = 0; i < xlApp.Sheets.Count; i++)
{
try
{
Worksheet wk = (Worksheet)xlApp.Sheets[i];
}
catch (Exception)
{
//This isn't a sheet - avoid sheet operations
}
}
Try-Catch を必要とせずにシートを反復処理する (非シートをスキップする) 方法を誰かが知っているかどうか疑問に思っていますか? シートが実際にはシートではないかどうかを判断できる Excel オブジェクト モデルのメソッドまたはプロパティはありますか?