- - PR -
sheetのコピー
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-29 17:51
いつも拝見させていただいています。
ご存知の方がいらっしゃいましたら教えていただければと思います。 現在、C#でエクセルを操作するものを作成しているのですが、 あるxlsファイルのシートを別のxlsファイルにコピーを行う処理部でエラーが 出てしまい、色々と調べてはみたのですがお手上げ状態になっております。 ※同一ファイル内でのコピーができることは確認が取れてます。 下記がエラーになっているコードです。 よろしくお願いします。 ---------------------------------------------------------- ((Excel.Worksheet)コピー元book.Sheets["Sheet1"]).Copy(コピー先 book.Sheets["Sheet1"],Type.Missing); ----------------------------------------------------------- | ||||||||||||
|
投稿日時: 2005-11-29 18:22
Cell に 256文字以上の文字列が含まれているとか
| ||||||||||||
|
投稿日時: 2005-11-29 19:47
ちゃっぴさん、早速の返答ありがとうございます。 すいません。質問内容について私の説明不足でした。 現在確認を行っているxlsファイルは両ファイルとも 空(データなし)のxlsファイルで行っています。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-11-30 09:40
エラーの内容を書いてくださると解決に近づくと思います。
これもまた、参照を解放するタイミングを失ってますね。 暗黙的に WorkSheets オブジェクトが参照されています。 参照の解放については以下をご参照ください。 COM オブジェクトを解放する _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-11-30 10:12
これは通常の Excel 操作の場合に、 「コピーするシートには、255 バイトを超える文字を含むセルがあります。 シート全体をコピーすると、各セルの 255 バイト目までがコピーされます。 すべてのデータをコピーするには、シート全体ではなく、セルを新しいシートにコピーします。」 という確認ダイアログを表示するもので、エラーではないです。 また、Excel COM の場合は表示されないようです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-11-30 10:45
じゃんぬねっとさん、ご返答ありがとうございます。
説明不足で申し訳ないです。 ご返答いただいた内容について追記いたします。 よろしくお願いします。
現在、発生しているエラー内容(メッセージ)は下記になります。 ------------------------------------------------------------------------- System.Runtime.InteropServices.COMException: HRESULT からの例外です : 0x800A03EC。 -------------------------------------------------------------------------
現在、確認を行っているロジック(C#)としては、下記のような構成になっています。 Excel.Application app1 = null; Excel.Workbook book1 = null; app = new Excel.Application(); book1 =(Excel.Workbook)app1.Workbooks.Add(コピー先Excelファイル); Excel.Application app2 = null; Excel.Workbook book2 = null; app2 = new Excel.Application(); book2 =(Excel.Workbook)app2.Workbooks.Add(コピー元Excelファイル); ((Excel.Worksheet)book2.Sheets["Sheet1"]).Copy(book1 .Sheets["Sheet1"],Type.Missing); COM オブジェクトへの参照を解放処理 解放処理を最後ではよくないのでしょうか・・。 | ||||||||||||
|
投稿日時: 2005-11-30 10:58
とりあえず、私も試してみますね。
順番の問題ではありません。 もう 1 度リンク先をご参照ください。 "たとえば" ここですが、
この時点で、Workbooks オブジェクト参照の解放のタイミングを逃していますよね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-11-30 11:50
とりあえず試してみました。
以下のようなコードで問題なくコピーはできました。 長文ですいませんです。(*_ _)
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |