VBA:【Excel】シートデータの二次元配列への取込み2(別ファイルのシートの場合)
別ファイルのExcelに作ったデータを、処理の途中で二次元配列で取り込みたい時も多いので、そのサンプルコードを載せておきます。
◆別ファイルのデータの二次元配列への取込み
以下のようなシートのデータを配列に取り込むサンプルです。
Excelブックは別ファイル(ツールの「A7」セルに記載とする)、シート名は「データシート」としています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Sub 別ファイルデータの二次元配列への取込み() Dim dataArray() As String '要素数を指定しない' Dim LastRow As Long Dim LastCol As Long Dim i As Long Dim j As Long Dim WB As Workbook Dim SheetName As String Dim objExcel As Object Dim FilePath As String '別ファイルのパスを取得' FilePath = Range("A7") 'Excelファイルのフルパスのセル' '別ファイルのシート名を指定します' SheetName = "データシート" 'Excelを開きます' Set objExcel = CreateObject("Excel.Application") Set WB = objExcel.Workbooks.Open(FilePath) With WB.Worksheets(SheetName) '最終行と最終列を指定します。' LastCol = .Cells(1, Columns.Count).End(xlToLeft).Column LastRow = .Cells(Rows.Count, 1).End(xlUp).Row '要素数を再定義します。要素が「0」からスタートするように引き算しています。' ReDim dataArray(LastRow - 2, LastCol - 1) '「データ」シートの情報を配列に取り込みます。' For i = 0 To UBound(dataArray, 1) For j = 0 To UBound(dataArray, 2) dataArray(i, j) = .Cells(i + 2, j + 1) Next j Next i End With Stop '後処理' WB.Close Set objExcel = Nothing Set WB = Nothing MsgBox "完了" End Sub |