この記事では、VBAを使って他のEXCELファイルのデータを読み込み、自EXCELのシートに貼り付ける機能の作り方を説明します。
読み込みするEXCELファイルのシートを指定可能、貼り付け先のEXCELファイルのシートも指定可能となっています。
このVBAはいろいろな便利な機能を作るときに、利用できますのでぜひご覧ください。
困っている女性
解決する男性
困っている女性
解決する男性
困っている女性
◆似たような作業で、指定されたフォルダに存在するすべてのCSVファイルを一気に取り込みする方法については、以下の記事を参照してください。
【EXCEL:VBA】フォルダに存在するCSVファイルを全て取り込みたい
◆似たような作業で、単純に1つのCSVファイルを取り込みする方法については、以下の記事を参照してください。
【EXCEL:VBA】CSVファイルを取り込みたい
それでは、他のEXCELファイルを取り込む機能の作り方を順番に説明していきます。
もくじ
1.取り込まれるEXCELファイル(xlsx)を準備する
なにはともあれ、取り込まれるEXCELファイルを準備します。
適当なファイル名でEXCELを作成し、「Sheet1」にデータを入力しておきます。
2.取り込み機能を実装するEXCELファイル(xlsm)を準備する
VBAを記述しますので、xlsm形式でEXCELファイルを作成します。
「Sheet1」に以下を指定するセルを用意します。
- 取り込むEXCELファイルのパス(セルB1)
- 取り込むEXCELファイルのデータが存在するシートNO(セルB2)
- 取り込んだデータを出力するシートNO(セルB3)
- 取り込んだデータを出力を開始するセル(セルB4)
3.EXCEL取り込み機能をVBAで作成する
「取り込むEXCELファイルのパス」と「取り込むEXCELファイルのデータが存在するシートNO」を引数に持つ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データ取り込み関数を利用する関数を作成します。
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プログラムを動かす
「開発」タブの「マクロ」をクリックします。
先ほど作成したVBAプログラムを選択し、「実行」をクリックします。
作成したVBAプログラムが動き、指定したEXCELファイルからデータを取り込み、指定したシートにデータが出力されました。
取り込みEXCELファイルのデータを変更して、試してみてください。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。