【いちからExcel VBA】他のExcelファイルを選定するメソッド、各sheet間でデータをやりとりするための操作

プログラミングの勉強

 
 VBAを使って、他のExcelファイルを選定して各ファイル間のデータをやりとりする際には、Workbookの選定”Application.GetOpenFilename()”、Workbookを開き”Workbooks.Open”、アクティブにして”**.Activate”、ワークシートのセル範囲”Worksheets(**).Range(“**”)”を操作してやります。とりあえず、これらのメソッドやプロパティを使えば操作可能です。

Excelファイルを選定するメソッド

 Excelファイルを指定する方法で便利な方法がGetOpenFilename()メソッドです。”ファイルを開く”ダイアログボックスを表示して、選択したファイルの絶対パスを取得します。[FileFilter]にはファイルの種類を指定することが出来ますが、記入しないとすべてのファイルが対象になります。

Applicationオブジェクト.GetOpenFilename([FileFilter])

 取得した絶対パスを指定してブックを開きます。そのメソッドはOpenメソッドで、つぎのようです。

Workbooksコレクション.Open(Filename)

 Workbookの変数にアクティブになっているWorkbookへの参照を代入しておきます。これにより、後でそれぞれのWorkbookをアクティブに切り替えながら操作を行っていきます。

Set オブジェクト変数 = ActiveWorkbook

 それぞれのWorkbookをアクティブに切り替えるときは、つぎのActivateメソッドを利用します。

オブジェクト変数.Activate

 つぎに示すプロシージャの例では、各sheetの指定は、Worksheets(i).Range(“B2”)Worksheets(1).Cells(i, 2)等のプロパティを利用しました。

プロシージャの作成例

 家計簿を付けたExcelファイルを読み取って、その各月のsheet内のデータを読み、プロシージャが書かれたsheetにデータを書き込んでいくプロシージャを作成してみました。

Option Explicit
Dim Thisbook As Workbook       'プロシージャを書いたExcelファイル
Dim Kakeibo As Workbook        'データを検索する家計簿を付けたExcelファイル
Dim fname As String            'ファイル名
Dim koumoku As String          'コピーするデータ
Dim i As Long

Sub ブックシート()

fname = Application.GetOpenFilename()    '家計簿ファイルを指定する
If fname = "False" Then                  'ファイルをキャンセルされると操作終了
    End
End If

Set Thisbook = ActiveWorkbook     'プロシージャを書いたファイルをThisbookにセット
Worksheets(1).Cells.Clear         '1番目のsheetのデータをクリア
Workbooks.Open fname              '家計簿ファイルをオープン
Set Kakeibo = ActiveWorkbook      '家計簿ファイルをKakeiboにセット

For i = 2 To 13
    Kakeibo.Activate                     '家計簿ファイルをアクティブにして
    koumoku = Worksheets(i).Range("B2")  'セルB2のデータをkoumokuに入力

    Thisbook.Activate                    'プロシージャファイルをアクティブにして
    Worksheets(1).Cells(i, 2) = koumoku  'koumokuを書き込む
Next
End Sub

プロシージャの実行例

 このプロシージャが書かれたシートを開いて実行すると、”ファイルを開く”ダイアログボックスが開きますので、ファイルを指定してファイルを開きます。

 選んだExcelファイルはR4年家計簿.xslxです。sheetは左から2番目から13番目までに各月の家計簿が記録されています。これらシートの”B2″の文字を読み取って、プロシージャが書かれたExcelファイルの1番目のシート”sheet1”に書き込んでいきます。

 その結果は下図のようで、2列目(B列)に書かれたデータから1月から12月のシートを読み取った事が分ります。

 ここで取り上げたWorkbookの選定アクティブ化、それぞれのsheetの選定と読み取り書き込みは、そのまま利用可能です。他にいろんな機能や設定方法、細かい設定もあるかと思いますが、まずコピーして試してみてください。
 以上、お役に立てれば幸いです。

コメント

タイトルとURLをコピーしました