こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2008-10-28 21:43:47

QNo.4437276

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

どのようなセル範囲のデータを取得したいのでしょう
明記されていない変数などがあって 意図が読み取れないのですが ・・・

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プロパティからデータを取得しましょう

投稿日時 - 2008-10-29 01:04:24

あなたにオススメの質問