30

Worksheet.range メソッドで HRESULT: 0x800A03EC を取得しています。行数が 70K を超えています。オフィス 2007。

コード:

Microsoft.Office.Interop.Excel.Range neededRange
    = currentWS.Range[cell.Cells[1, 1], cell.Cells[nRowCount, nColumnCount]];

ここで、行数は 65530 を超えています。この機能を中断します。行数が 65530 を超えた場合にのみ壊れることを確認しました。

4

26 に答える 26

27

この問題は、.xlsx ではなく下位互換シート (.xls) を使用している場合に発生します。

Office 2007 より前のバージョンでシートを開くには、65,000 行を超えるシートを含めることはできません。一番下に到達するまで ctrl+arrowdown を使用して、シートの行数を確認できます。その行数よりも大きい範囲を取得しようとすると、エラーが発生します

于 2011-08-18T13:45:31.107 に答える
19

私たちは同じものを受け取っていました。例外は

スタックトレース: Microsoft.Office.Interop.Excel._Workbook.SaveAs (オブジェクト ファイル名、オブジェクト FileFormat、オブジェクト パスワード、オブジェクト WriteResPassword、オブジェクト ReadOnlyRecommended、オブジェクト CreateBackup、XlSaveAsAccessMode AccessMode、オブジェクト ConflictResolution、オブジェクト AddToMru、オブジェクト TextCodepage、オブジェクト テキスト VisualLayout、オブジェクトローカル)`

内部例外あり

HRESULT からの例外: 0x800A03EC 2012-11-01 10:37:59`

この投稿の情報を使用して問題を解決できました。便宜上ここに引用します...

  1. 管理者としてサーバーにログインします。
  2. [スタート] -> [ファイル名を指定して実行] に移動し、「taskmgr」と入力します。
  3. タスク マネージャーのプロセス タブに移動し、[すべてのユーザーのプロセスを表示する] にチェックを入れます。
  4. リストに「Excel.exe」エントリがある場合は、エントリを右クリックして「プロセスの終了」を選択します。
  5. タスク マネージャーを閉じます。
  6. [スタート] -> [ファイル名を指定して実行] に移動し、「services.msc」と入力します。
  7. Excel 自動化サービスが実行されている場合は停止します。
  8. [スタート] -> [ファイル名を指定して実行] に移動し、「dcomcnfg」と入力します。
  9. これにより、コンポーネント サービス ウィンドウが表示され、[Console Root] -> [Computers] -> [DCOM Config] が展開されます。
  10. コンポーネントのリストで「Microsoft Excel アプリケーション」を見つけます。
  11. エントリを右クリックし、「プロパティ」を選択します
  12. プロパティ ダイアログの [ID] タブに移動します。
  13. 「インタラクティブなユーザー」を選択します。
  14. 「OK」ボタンをクリックします。
  15. サービス コンソールに切り替えます
  16. Excel自動化サービス開始
  17. アプリケーションを再度テストします。
于 2012-11-01T10:11:03.920 に答える
18

この問題が発生しました。

コードのどこかで、(C# コードの場合と同様に) 0 からカウントするように要求していたことを発見しました。

Excel のカウントは 1 から始まります。

于 2015-02-02T10:47:05.740 に答える
13

上記のさまざまな応答を見て、私自身の最近の経験を利用して (このエラー コードはまったく関係のないことを行っています -- 設定Application.Calculation)、複数の無関係な問題を示すために同じエラー コードが使用されていると結論付けました。したがって、@Garrehおそらく新しい質問をする必要があります(エラーコードだけに基づいて誰かが助けることができるわけではありません)。私は、C# の Word 相互運用機能で同じことが機能しているのを見てきましたHRESULT。ほぼすべての種類のエラーに同じことが使用されているようです。コードが何を意味するのかについて満足のいくマイクロソフトのドキュメントを見つけたことがありません。

于 2013-02-11T17:29:27.990 に答える
5

これは、保存先のパーティションに余裕がない場合にも発生する可能性があります。

HD を確認したところ、最大になっていることがわかりました。不要なファイルを別のパーティションに移動すると、問題が解決しました。

于 2012-11-07T15:33:55.437 に答える
3

単純に、Excel ファイルが破損しています。最善の解決策は、ファイルを変更/修復することです (既存のファイルのコピーを作成し、名前を変更します)。

于 2012-10-23T05:17:11.933 に答える
1

Not being able to reply to/endorse this answer, so posting here:

Indeed, the format of the source/destination ranges when moving data from one range to another might cause this error as well.

In my case, the range I wanted to copy contained a date formatted column, and the column contained one cell with an invalid date value (it was not even formatted due to its value, which was a negative integer). So the copy operation between the two ranges was halting at the said cell yielding the very error message discussed here.

The solution in my case was to use Range.Value2 instead of Range.Value, which caused Excel to bypass formatting the cell as a date (more details here). However, this will render your date and time columns to display as integers and decimals. You will, however, be able to change the formats to the desired ones if you know where to expect the date and time values by setting their Range/Column/Cell.NumberFormat property accordingly.

于 2016-06-23T11:00:48.357 に答える
1

問題がわかりません。しかし、これが私の問題を解決したものです。

[Excel のオプション] > [保存] > [この形式でファイルを保存] > [Excel ブック (*.xlsx)] を選択します。以前は、ワークブックは [互換性モード] で開いていましたが、現在は通常モードで開いています。範囲機能はそれでうまく機能します。

于 2011-08-18T16:10:52.917 に答える
0

編集:これはずっと良いです!!! その古い関数は必要ありません。申し訳ありません。次のようにしてください。

Microsoft.Office.Interop.Excel.Range neededRange = currentWS.Range["A1", ((Microsoft.Office.Interop.Excel.Range)currentWS.Cells[nRowCount, nColumnCount])];

それは魅力のように機能するはずです。今後の参考のために、使用している関連コードを質問の中に入れてください。コメントで人々にそれを求めさせないでください。それがあなたが反対票を投じられた理由だと思います。

于 2011-08-17T22:25:23.143 に答える
0

Hugh W の投稿「複数の無関係な問題を示すために同じエラー コードが使用されていると結論付けています」に同意します。

他の投稿では、ワークシートがロックされている場合にこのエラーが頻繁に発生することは言及されていません。すべてのシナリオをテストしたわけではありませんが、ワークシートがロックされているときに Excel で実行できないことは、シートがロックされているときに VSTO/Com を介して実行しようとすると、このエラーがスローされるようです。EG スタイル アーティファクト (フォント、フォント サイズ、色、下線) の変更、Excel 検証の変更、列幅、行の高さ、数式の変更

于 2017-09-08T00:29:17.597 に答える
0

私は同じエラーに遭遇しました。私にとっては、エラーが発生したのは、それぞれ CountIf と CountIfs を設定しようとしていたときでした。

いくつかの試行錯誤の後、エラーが複数のパラメーターを使用するすべての数式で発生した問題であることがわかりました。

パラメータセパレータ「;」が (セミコロン)、私が Excel で使用するものは、コード ビハインドで使用するのに適切なものではありません。代わりに「,」(コンマ) を使用すると、数式が正しく使用されます。注: 後で Excel で表示すると、「;」と表示されます。(セミコロン)。

私の試行錯誤のプロセスには、さまざまな数式を設定しようとすることが含まれていましたが、これが最終的な「修正」でした。私は英語のウィンドウを実行していますが、私はデンマークにいます。私の問題に何らかのローカリゼーションが関係しているかどうかはわかりません.

CultureInfo.CurrentCulture.TextInfo.ListSeparator は ";" であり、これはバリデータ ルール値を分離するために正しく機能します。おそらく、これが私のパラメーターセパレーターが別のものである理由です。

いずれかの方法; 別のパラメーター区切り文字を使用する必要があるため、式が間違っている可能性があります。

于 2021-07-28T08:14:42.287 に答える
0

文字数が多すぎるシートの名前を変更しようとしたため、このエラーが発生しました

于 2017-05-29T08:56:21.740 に答える
0

プロジェクトの内容をExcelファイルにエクスポートするアプリケーションを開発していたときも、同じ問題に直面しました。

フォーラムで私の問題の解決策が見つからなかったので、Excel の最大容量を確認し、以下のリンクを見つけました。

「ワークシートのサイズは1,048,576行×16,384列」で、これが私の場合の問題で、それ以上の行をエクスポートしていました。詳細は下記リンク参照

http://answers.microsoft.com/en-us/office/forum/office_2013_release-excel/with-excel-2013how-many-rows-will-this-contain/271264fb-3ab8-4c5b-aa0d-7095c5ac6108

よろしく プラシャント・ネヴェ

于 2016-02-05T04:04:06.783 に答える
0

セルの配列を range.Value に割り当てようとしたときに、正確なコードでエラーが発生しました。私の場合、それは間違ったデータ形式の問題でした。セルのデータ形式は DATE に設定されていましたが、ユーザーが誤って "20.02.2013" の代わりに "20.02.0213" という日付を入力しました。Excel の COM オブジェクトは年 '0213' の取得を拒否し、このエラーで例外をスローしました。

于 2015-02-21T21:00:39.483 に答える