🥰
【ExcelVBA】OneDrive上のExcelファイルのデータを1行ずつ取り出し、2次元配列に格納する
はじめに
OneDrive上にあるExcelファイルを操作して、Excelファイルのデータを1行ずつ取り出し、2次元配列に格納するVBAマクロを作りました。
データ
データは以下の通りです

ソースコード
ソースコードは下記のとおりです。
'OneDrive上のExcelデータから1行1列ずつ値を取得する処理
Sub ShowOneDrivePath()
Dim objShell As Object
Dim OneDrivePath As String
Dim wb1, wb2 As Workbook
Dim ws1, ws2 As Worksheet
Dim file_name As String
Dim full_file_name As String
Dim i, j, k, l As Long
Dim array1 As Variant
' Create a Shell object
Set objShell = CreateObject("WScript.Shell")
' Get the OneDrive path from the environment variable
OneDrivePath = objShell.ExpandEnvironmentStrings("%OneDrive%")
full_file_name = OneDrivePath & "\" & "myTIMテスト" & "\" & "OneDrive_test1.xlsm"
Set wb1 = Workbooks.Open(full_file_name)
Set ws1 = wb1.Worksheets("test1")
Dim startRange As Range
Dim startRow As Long
Dim endRange As Range
Dim endRow As Long
Dim address As String
Dim arrAddress As Variant
Dim startColumnAlphabet As String
Dim endColumn As Long
Dim endColumnAlphabet As String
Dim wf As WorksheetFunction
Dim arrData(100) As Variant
Dim data As Variant
'開始セルを取得
Set startRange = ws1.Range("B4")
'対象となる行を取得
startRow = startRange.Row
'開始セルの「列を示すアルファベット」を取得
address = startRange.address(RowAbsolute:=True, ColumnAbsolute:=False)
arrAddress = Split(address, "$")
startColumnAlphabet = arrAddress(0)
'最終列を取得
endColumn = startRange.End(xlToRight).Column
'最終列を取得
endRow = ws1.Cells(Rows.Count, endColumn).End(xlUp).Row
'最終セルを取得
Set endRange = ws1.Cells(endRow, endColumn)
'最終セルの「列を示すアルファベット」を取得
address = endRange.address(RowAbsolute:=True, ColumnAbsolute:=False)
arrAddress = Split(address, "$")
endColumnAlphabet = arrAddress(0)
'worksheet関数をセットする
Set wf = Application.WorksheetFunction
k = 0
For i = startRow To endRow
'指定した範囲を一括で取得する
arrData(k) = wf.Transpose(wf.Transpose(Range(startColumnAlphabet & i & ":" & endColumnAlphabet & i)))
k = k + 1
Next i
l = 0
'配列の数だけ繰り返し
For l = 0 To k - 1
For Each data In arrData(l)
'配列を表示
Debug.Print data
Next
Next l
End Sub
テスト結果
テスト結果は下記の画像です。

最後に
色んな事が出来るので、OneDriveを使えると便利ですね!
Discussion