「Book①.xlsx」から「Book②.xlsm」にデータを取得する事はできたのですが、ループ処理がわかりません。
VBAの勉強を始めたばかりの初心者です。
「Book②.xlsm」に画像のとおり取り込みファイルパス等を記載しています。この情報をもとに「Book①.xlsx」から「Book②.xlsm」にデータを取得するというマクロを作成しました。
以下、No1の行のみ実行するコードです。
No2以降も空白になるまで繰り返し実行するコードに修正したいのですが、調べて色々試しましたがわかりませんでした。どのようなコードを記載したらよいのでしょうか。
'「取り込むEXCELファイルのパス」と「取り込むEXCELファイルのデータが存在するシートNO」を引数に持つEXCEL関数を作成。 Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As String) As Variant Dim wb As Workbook Dim ws As Worksheet 'ワークブックを開く Set wb = Workbooks.Open(FilePath) 'シートを取得 Set ws = wb.Worksheets(SheetNo) 'データ入力されている範囲を取得する GetExcelData = ws.UsedRange 'ワークブックを閉じる wb.Close 'メモリー開放 Set ws = Nothing Set wb = Nothing End Function '次に、先程のEXCELデータ取り込み関数を利用する関数を作成。(No.1のデータ取り込み)) Public Sub Macro1() Dim var As Variant Dim FilePath As String Dim InSheetNo As String Dim OutSheetNo As String Dim OutCell As String With ThisWorkbook.Sheets(1) FilePath = .Range("B2") InSheetNo = .Range("C2") OutSheetNo = .Range("D2") OutCell = .Range("E2") row = row + 1 End With '他のEXCELファイルデータを取り込む var = GetExcelData(FilePath, InSheetNo) Dim MaxRow As Long Dim MaxCol As Long '最大行数を取得する MaxRow = UBound(var, 1) '最大列数を取得する MaxCol = UBound(var, 2) '自ワークブックの1番目のシートのセルA1を基点に取り込んだデータを出力する ThisWorkbook.Sheets(OutSheetNo).Range(OutCell).Resize(MaxRow, MaxCol).Value = var End Sub

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/21 05:37
2022/04/21 05:45
2022/04/21 06:06