• 締切済み

ExcelデータをVB.NETに取り込みたいのですが

現在ExcelデータをVB.NETに取り込もうとしています。ただ単純に取り込む方法では出来ないと思われ、是非皆さんに知恵を貸して頂きたいと思います。 セルA1~G1、A2~G2、A3~G3のセル位置をそれぞれ座標(1,1)~(1.7)、(2.1)~(2,7)、(3,1~3,7)とみなし、そのセルの数値を(i、j)の変数を用いて配列的に取り込むにはどうすればよろしいでしょうか? 例えばA1の数値が5、B1の数値が7、A2の数値が3だった場合、VB内では(1,1)=5、(1,2)=7、(2,1)=3というようにExcelデータを取り込みたいのです。この場合はデータ数が少ないので手動でVBにデータを入力すればよいのですが、実際はデータ量が多く、なんとか配列を用いて処理したいと思っています。 よろしくお願いいたします。 説明が足りない場合は遠慮なくお申し付けください。

みんなの回答

noname#221368
noname#221368
回答No.2

 もう少し直感的なコードも可能です。Worksheetを取得するところまでは#1さんと同じで、SWorkerとします。  Dim Values(3, 7) as Decimal  With SWorker   For i as Integer = 1 to 3    For j as Integer = 1 to 7     TestValue as Decimal = .Cells(i, j)     If IsNumeric(TestValue) = True Then      Values(i, j) = CDec(.Cells(i, j).Value)     End If    Next j   Next i  End With となります。速度は#1さんの方が速いですが、高速化する方法もあります。

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

VB.NET(2003)でExcelから取り込むまでは、こんな感じで出来ました。 Dim xlapp As New Excel.Application Dim xlwb As Excel.Workbook Dim xlws As Excel.Worksheet Dim xlrng As Excel.Range Dim v(,) As Object xlwb = xlapp.Workbooks.Open("R:\aaa.xls") xlws = xlwb.Worksheets("Sheet2") xlrng = xlws.UsedRange ReDim v(xlrng.Rows.Count, xlrng.Columns.Count) MsgBox(xlrng.Address) v = xlrng.Value MsgBox(UBound(v, 1) & "_" & UBound(v, 2)) Erase v xlwb.Close(False) パス・ファイル・シート名については適宜修正願います。 以降については初心者なので、回答は困難かも知れません。 (今日初めてやったものですので)

anton1353
質問者

お礼

ありがとうございます! 早速試してみます☆

すると、全ての回答が全文表示されます。

関連するQ&A