• 締切済み

VisualBasic2008でのエクセルファイル読み込み

今までMATLABで作っていたものをVB2008でも作ることになり、18000(行)×16(列)のエクセルファイルの数値データを0.01秒おきに1行ずつ読み込んで1×16行列(VBで行列と呼ぶのかはわからないのですが・・・)を作成し別に作っておいた1×16行列と逐一比較をしたいのですが、VB2008でのファイルの読み込み方法がわからず行き詰っております。 できれば「0.01秒おきに」という処理も含めてどなたかご教授願えないでしょうか?

みんなの回答

回答No.1

Excelファイルの読み書きはサンプルプログラムもたくさん見つかるので検索してみてください。 一応COMクラスを使った読み取りのサンプルを載せておきます。 ' 参照の追加(COM)で「Microsoft Excel 11.0 Object Library」を追加 ' Excelのアプリケーションオブジェクトを作成 Dim excel As New Microsoft.Office.Interop.Excel.Application ' ワークブックをファイルから開く Dim book As Microsoft.Office.Interop.Excel.Workbook book = excel.Workbooks.Open("C:\hoge.xls") ' 1枚目のワークシートを取得 Dim sheet As Microsoft.Office.Interop.Excel.Worksheet sheet = CType(book.Worksheets.Item(1), Microsoft.Office.Interop.Excel.Worksheet) ' アドレス「A1」の値を表示 MsgBox(sheet.Range("A1").Value) ' ワークブックを閉じる Call book.Close() ' COMオブジェクトを解放 Call System.Runtime.InteropServices.Marshal.ReleaseComObject(sheet) Call System.Runtime.InteropServices.Marshal.ReleaseComObject(book) Call System.Runtime.InteropServices.Marshal.ReleaseComObject(excel) ' ガベージコレクタ回収(Excelプロセスを終了させるため) Call System.GC.Collect() > 「0.01秒おきに」という処理 こちらの方が課題ですね。Windowsでのタイマー処理はあちこちで取り上げられていますが、なかなか明確な解決法はないようです。 一般的なTimerコントロールでは、0.01秒(10ms)という精度はおそらく出ないと思います。どこまでの精度が必要かはわかりませんが、マルチメディアタイマーやパフォーマンスカウンタなどを駆使する必要があると思います。 Yahoo! 知恵袋より「C#プログラムで使える高精度のタイマーは?」 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1123535371