この記事では、VBAを使って他のEXCELファイルのデータを読み込み、自EXCELのシートに貼り付ける機能の作り方を説明します。
読み込みするEXCELファイルのシートを指定可能、貼り付け先のEXCELファイルのシートも指定可能となっています。
このVBAはいろいろな便利な機能を作るときに、利用できますのでぜひご覧ください。
困っている女性
解決する男性
困っている女性
解決する男性
困っている女性
◆似たような作業で、指定されたフォルダに存在するすべてのCSVファイルを一気に取り込みする方法については、以下の記事を参照してください。
![フォルダに存在するCSVファイルを全て取り込みたい](https://i2.wp.com/excel.kuuneruch.com/wp-content/uploads/2020/12/01-1.png?resize=520%2C300&ssl=1)
◆似たような作業で、単純に1つのCSVファイルを取り込みする方法については、以下の記事を参照してください。
![CSVファイルを取込したい](https://i1.wp.com/excel.kuuneruch.com/wp-content/uploads/2020/06/01-13.png?resize=424%2C300&ssl=1)
それでは、他のEXCELファイルを取り込む機能の作り方を順番に説明していきます。
もくじ
1.取り込まれるEXCELファイル(xlsx)を準備する
なにはともあれ、取り込まれるEXCELファイルを準備します。
![取り込み対象のEXCELファイル](https://i0.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/02-8.png?resize=452%2C213&ssl=1)
取り込み対象のEXCELファイル
適当なファイル名でEXCELを作成し、「Sheet1」にデータを入力しておきます。
2.取り込み機能を実装するEXCELファイル(xlsm)を準備する
VBAを記述しますので、xlsm形式でEXCELファイルを作成します。
![取り込むEXCELファイルを指定するセルを用意する](https://i1.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/02-1-1.png?resize=637%2C246&ssl=1)
取り込むEXCELファイルを指定するセルを用意する
「Sheet1」に以下を指定するセルを用意します。
- 取り込むEXCELファイルのパス(セルB1)
- 取り込むEXCELファイルのデータが存在するシートNO(セルB2)
- 取り込んだデータを出力するシートNO(セルB3)
- 取り込んだデータを出力を開始するセル(セルB4)
3.EXCEL取り込み機能をVBAで作成する
「取り込むEXCELファイルのパス」と「取り込むEXCELファイルのデータが存在するシートNO」を引数に持つEXCEL関数を作成します。
![EXCELデータ取り込み関数](https://i1.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/04-8.png?resize=672%2C312&ssl=1)
EXCELデータ取り込み関数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Public Function GetExcelData(ByVal FilePath As String, ByVal SheetNo As Integer) 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データ取り込み関数を利用する関数を作成します。
![EXCELデータ取り込み関数を利用する関数](https://i1.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/05-8.png?resize=643%2C428&ssl=1)
EXCELデータ取り込み関数を利用する関数
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 |
Public Sub Test1() Dim var As Variant Dim FilePath As String Dim InSheetNo As Integer Dim OutSheetNo As Integer Dim OutCell As String With ThisWorkbook.Sheets(1) FilePath = .Range("B1") InSheetNo = .Range("B2") OutSheetNo = .Range("B3") OutCell = .Range("B4") 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 |
- 取り込むEXCELファイルのパス(セルB1)
- 取り込むEXCELファイルのデータが存在するシートNO(セルB2)
- 取り込んだデータを出力するシートNO(セルB3)
- 取り込んだデータを出力を開始するセル(セルB4)
4.作成したVBAプログラムを動かす
「開発」タブの「マクロ」をクリックします。
![マクロから自作関数を呼び出す](https://i0.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/02-2-1.png?resize=586%2C360&ssl=1)
マクロから自作VBAプログラムを呼び出す
先ほど作成したVBAプログラムを選択し、「実行」をクリックします。
![自作した関数を実行する](https://i2.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/02-3-1.png?resize=384%2C334&ssl=1)
自作した関数を実行する
作成したVBAプログラムが動き、指定したEXCELファイルからデータを取り込み、指定したシートにデータが出力されました。
![他のEXCELファイルのデータが読み込まれた](https://i2.wp.com/excel.kuuneruch.com/wp-content/uploads/2019/06/03-8.png?resize=454%2C214&ssl=1)
他のEXCELファイルのデータが読み込まれた
取り込みEXCELファイルのデータを変更して、試してみてください。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。