指定のブックのセルのデータを取得・格納する

今回の目標

  • 他のエクセルファイルの値を取得できるようになる
  • 他のエクセルファイルのセルへ値を格納できるようになる
  • 説明

    事前準備

  • 指定したシートのセルの値を取得できないと他エクセルファイルの操作はできません。
    よくわからないよ、という方はこちらから学習ください。
  • 新規作成より新しくブックを作成し、"Book2.xlsx"として閉じずに保存してください。
  • マクロを実行しているエクセルファイルのセルの値を取得する

    「何を言っているんだ?普段、何を指定しなくても取得できているではないか?」と思われるかもしれません。しかし、その考えは違います。ExcelVBAではブックを指定しないとき、アクティブなブックをセルの値を取得します。
    2つ以上のブックにまたがるマクロを作りたいときは必ずブックの指定を行いましょう。油断しているとバグとしてあなたを襲ってくるかもしれません。

    では、基本構文です。

    ' マクロを実行しているエクセルファイルのセルの値を取得する
    buf = ThisWorkBook.WorkSheets("Sheet1").Cells( 1, 2)
    

    シートの指定の前に、”ThisWorkBook.”とつけるとマクロを実行しているブックから値を取得できます。ブックを指定する場合は、必ずシートを指定する必要があるので注意してください。ブック⇒シート⇒セルの順番で指定ください。忘れそうな方は次の画像を見てください。

    外から順に、ブック⇒シート⇒セルとなっており、ブックの中にシートがあり、どのセルかを指定するイメージです。

    他のエクセルファイルのセルの値を取得する

    基本構文です。

    ' 他のエクセルファイル(Book2.xlsx)のSheet1のセルB1の値を取得する
    buf = WorkBooks("Book2.xlsx").WorkSheets("Sheet1").Cells( 1, 2)
    

    マクロを実行しているブックでないブックからセルの値を取得するときは、[WorkBooks("ブック名").]とシートの前につけます。

    他のエクセルファイルのセルへ値を格納する

    基本構文です。

    ' 他のエクセルファイルのセルへ値を格納する
    WorkBooks("Book2.xlsx").WorkSheets("Sheet1").Cells( 1, 2) = "ABC"
    

    マクロを実行しているブックでないブックへセルの値を格納するときは、[WorkBooks("ブック名").]とシートの前につけます。

    誤ったマクロを実行してしまうと、マクロの仕様上、Undo(Ctrl+Z)が効きません。注意してシートを指定しましょう。

    他のエクセルファイル(Book2.xlsx)のSheet1のセルB1に値を格納する

    基本構文です。復習として簡単に載せておきます。

    ' マクロを実行しているブックのシート1のセルA2の値をBook2.xlsxのSheet1のセルB1に格納する
    WorkBooks("Book2.xlsx").WorkSheets("Sheet1").Cells( 1, 2) = _
        ThisWorkBook.WorkSheet("Sheet1").Cells( 2, 1)
    

    いかがでしたか。エクエルマクロを本格的に学ぶ人にとって、他ブックの操作は避けては通れない道です。どうせ覚えるなら早めに覚えてきましょう。

    関連リンク

    ページの先頭へ