- - PR -
VB.NetからExcelファイルを読込む
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-15 16:06
はじまして。
VB.NetからExcelオブジェクトを使ってExcelファイルを読込む 処理をしています。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet xlApp = CType(CreateObject("Excel.Application"), Excel.Application) xlBook = CType(xlApp.Workbooks.Open("D:\\TEST.xls", ReadOnly:=True), Excel.Workbook) xlSheet = CType(xlBook.Worksheets("TESTA"), Excel.Worksheet) 読込んだデータを変数にセット xlBook.Close() xlApp = Nothing xlBook = Nothing xlSheet = Nothing GC.Collect() デバッグでは正常に動きますが、直接プログラムを起動させた時に 下記エラーメッセージを表示します。 ******************************************************* EXCEL.EXE 〜アプリケーションエラー〜 "0x650f44b9"の命令が"0x650f44b9"のメモリを参照しました。 メモリが"read"になることはできませんでした。 ******************************************************* どうやらxlBook.Close()の直前で発生するようです。 それと、読込むExcelデータの件数でもエラー/正常がわかれます。 370件はエラー 360件はOK このような現象は初めてです。 どなたか知っていらっしゃる方がいたら 教えていただけないでしょうか? | ||||
|
投稿日時: 2005-06-15 16:56
その前に、GC に頼った解放をしているところを見ると、
「読込んだデータを変数にセット」部分に色々問題がありそうだな、 などと予想してしまいます。 CreateObject などを使う必要もないですし。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-06-15 17:01
よく分からずにGC.Collect() を使っています。
どこかのサンプルにあったので。 Excelオブジェクトを使うのにCreateObjectは必要ないんですか? | ||||
|
投稿日時: 2005-06-15 17:11
こんにちは、じゃんぬ です。
ここなんかは、かなり良い見本になると思います。 .NETからExcelの基本的な操作方法 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-06-16 10:24
教えていただいた処理のように書き直したらあっさり解決してしまいました。
悩んでいたのが嘘のようです。 VB.Netの実践の本にはCreat.Objectを使ってExcelを開くよう書いてあったので そのまま使っていました。 きちんと開放しなければいけないんですね。 COM オブジェクト?ガベージ コレクション?プロセス? いまいちピントこない状態なのでこれからもっと勉強します。 ありがとうございます。 | ||||
|
投稿日時: 2005-06-16 10:24
教えていただいた処理のように書き直したらあっさり解決してしまいました。
悩んでいたのが嘘のようです。 VB.Netの実践の本にはCreat.Objectを使ってExcelを開くよう書いてあったので そのまま使っていました。 きちんと開放しなければいけないんですね。 COM オブジェクト?ガベージ コレクション?プロセス? いまいちピントこない状態なのでこれからもっと勉強します。 ありがとうございます。 |
1