2つ目に開いている別のエクセルのファイルからセルの値を取得

Excel-VBA ファイルの操作

エクセルを使っていると別のエクセルファイルのデータを取得して、今使っているエクセルファイルに書き込みたいことありませんか?

Aというファイル名のエクセルのセルA1の値は、Bというファイル名のエクセルA1の値から取得して記載するなんて事。

この場合は、ファイル名+シート名+セル番地とVBAコードを書けば可能です。

(書き込みたいセル番地).Value = Workbooks(ファイル名).Sheets(シート名).(セル番地).Value

と、シンプルに順番にファイル名から書き込むだけです。

ただし、この方法はファイル名・シート名を直接VBAコードに書き込むので、保存場所が変わってしまったり、ファイル名やシート名が変更されてしまうとエラーになります。

そこで、ひと工夫してファイル名やシート名が分からなくても指示できるようにしましょう。

スポンサーリンク

インデックス番号を使って解決

インデックス番号とは、エクセルファイルでもシートでも何番目に開いたエクセルファイル(Book)やシート(Sheet)で言うと左から何番目のシートなのかを番号で表します。

その為、ファイル名やシート名が分からなくても指定することができるのでとても便利な方法です。

そこで、2つ目に開いたエクセルファイルを参照するならば、Workbooks(2)となり、3つ目のシートであれば、Sheets(3)となります。

インデックス番号でファイル・シート指定

Private Sub CommandButton1_Click()
Range(”A1″).Value = Workbooks(2).Sheets(3).Range(“D1”).Value
Range(”B1″).Value = Workbooks(2).Sheets(3).Range(“E1”).Value
Range(”C1″).Value = Workbooks(2).Sheets(3).Range(“F1”).Value
End Sub

VBA解説
  1. コマンドボタン1がクリックされたら
  2. セルA1の値は、2番目に開いたエクセルファイルの3番目のシートのセルD1の値とする
  3. セルB1の値は、2番目に開いたエクセルファイルの3番目のシートのセルE1の値とする
  4. セルC1の値は、2番目に開いたエクセルファイルの3番目のシートのセルF1の値とする
  5. マクロ記録終了

このインデックス番号を使う事により、他のファイルからデータを取り込むときにファイル名やシート名を気にしなくて済むので、ダウンロードしたCSVファイルを開いてデート取込などに活用できるようになります。

その場合は、ファイルを選択ダイアログ表示してエクセルファイル開いて、必要データを取り込んでファイルを閉じるVBAコードを付け足せば完成します。