- 締切済み
Excelにおけるセルの値をVB2005に配列として取り込みたい
Excelのセルの値をVB2005に配列として取り込みたいのですが、Excel.Rangeと配列の整合性が取れず困っています。 なんらかヒントになるような助言をお願いします。 以下は今までに作成中のコードです。 Public Class Form1 Dim xlsapp As New Excel.Application Dim xlsbook As Excel.Workbook Dim xlssheet As Excel.Worksheet Dim fn As String = "sample.xls" Dim Q(,,) As Double Dim i, j, x, y, z As Integer Dim k As Double Dim w(i), v(i), u(i) As Double Dim As Object Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click xlsbook = xlsapp.Workbooks.Open(fn) xlssheet = xlsbook.Worksheets(1) k = 1 w(i) = xlssheet.Cells(1, 3) v(i) = xlssheet.Cells(1, 2) u(i) = xlssheet.Cells(1, 1) For x = 2 To 11 If w(i) = 1 Then For y = 2 To 11 If v(i) = 1 Then Q(1, 1, k) = u(i) k = k + 1 End If Next End If Next z = k For k = 1 To z TextBox1.Text = Q(1, 1, k) Next End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() xlsapp.DisplayAlerts = False xlssheet = Nothing xlsbook.Close() xlsbook = Nothing xlsapp.Quit() xlsapp = Nothing End Sub End Class
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
どのようなセル範囲のデータを取得したいのでしょう 明記されていない変数などがあって 意図が読み取れないのですが ・・・ VB.NETからExcelを起動するならComオブジェクトの開放をしっかりやりましょう そうしないと Excelのタスクが残ってしまいますよ 暗黙の参照をしないように心がけましょう たとえば xlsbook = xlsApp.Workbooks.Open(ファイル名) ではダメなのです xlsApp.Workbooks.Open(ファイル名) には Workbooksという暗黙の参照が発生してしまいこれの開放が出来ません この場合には dim wkbooks as Workbooks wkbooks = xlsApp.Workbooks といった具合にして 孫世代のプロパティへのアクセスをしないようにします また開放時にも marshal.ReleaseComObject(xlbook) などを使って Comオブジェクトの開放もやりましょう xlssheet.CellsなどもRangeオブジェクトで受けて そのオブジェクトのValueプロパティからデータを取得しましょう