大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、別ブックのセルの値を取得する方法について、ご紹介します。別ブックから、セルの値を取得するには、まずは、別ブックを開く必要があります。別ブックを開けたら、あとは、「Workbooks」でセルの値を取得することができます。具体的なVBAコードを使いながら、解説していきます。

はじめに

この記事では、別ブックのセルの値を取得する方法について、ご紹介します。

別ブックから、セルの値を取得するには、まずは、別ブックを開くところから始まります。

別ブックを開けば、あとは、「Workbooks」を使って、セルの値を取得することができます。

別ブックからセルの値を取得できるようになると、自動化できる範囲が広がりますので、マスターしていきましょう。

では、別ブックからセルの値を取得する方法について、解説していきます。

この記事で紹介すること

  • 別ブックからセルの値を取得する方法

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

VBAで別ブックのセルの値を取得

VBAで、別ブックのセルの値を、取得する方法について、ご紹介します。

実務では、自分のブックだけではなく、別ブックの値を使ってデータの分析などをしたりしますので、別ブックの値が取得できるようになると、便利です。

Workbooksを使う

ブックを扱う場合は、「Workbooks」を使います。

別ブックの値を参照する場合は、

「Workbooks(ブック名).Worksheet(シート名).Range(セル)」

という感じで入力します。

条件としては、別ブックが開いている必要があります。

考え方としては、

  • 別ブックが開いているとき、「そのまま」値を取得する
  • 別ブックが開いていないとき、「別ブックを開いて」値を取得する

という感じです。

では、別ブックが「開いているとき」と、「開いていないとき」で、VBAコードを見てみます。

別ブックが開いているとき

まず、すでに値を取得したいブックが開いている場合です。

既に開いている、別ブックから値を取得するVBAコードです。

Sub TEST1()
    
    Dim Wb1, Wb2
    Set Wb1 = ThisWorkbook 'このブック
    Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック
    
    'セルの値を取得する
    Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
    
End Sub

最初に、「元ファイル.xlsm」と「取得先のファイル.xlsx」というファイルを開いておきます。

別ブックを開いておく

元ファイルと取得先のファイルを開いておく

「元ファイル.xlsm」がVBAコードが記載されているファイルです。

「取得先のファイル.xlsx」には、「Sheet1」のセルに値が入力されています。

では、VBAコードを実行します。

別ブックから値を取得

別ブックから値を取得した結果

別ブックから、値を取得することができました。

既に、別ブックが開いている場合は、簡単です。

別ブックが閉じているとき

次は、値を取得したい別ブックが、閉じている場合です。

この場合は、

  • 別ブックを開く
  • 別ブックから値を取得する

という流れで、値を取得します。

別ブックが閉じている場合に、別ブックから値を取得するVBAコードは、こちらです。

Sub TEST2()
    
    '別ブックを開く
    Workbooks.Open Filename:=ThisWorkbook.Path & "\取得先のファイル.xlsx"
    
    Dim Wb1, Wb2
    Set Wb1 = ThisWorkbook 'このブック
    Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック
    
    'セルの値を取得する
    Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
    
End Sub

VBAコードが記載されている「元ファイル.xlsm」だけが開かれています。

別ブックは閉じた状態

別ブックは閉じた状態

値を取得したい「取得先のファイル.xlsx」は、同じフォルダ内に、保存してあります。

フォルダ構成

フォルダ構成

では、VBAコードを実行して、「取得先のファイル.xlsx」からファイルを取得してみます。

別ブックを開いてセルの値を取得

別ブックを開いて、セルの値を取得した結果

別ブックを開いて、セルの値を取得することができました。

こんな感じで、値を取得したいブックが、閉じている場合は、一度ブックを開いてから値を取得する、とできます。

実務で別ブックのセルを取得する場合

実務で、別ブックのセルから値を取得する場合について、ご紹介します。

気を付けるポイントは、

  • 別ブックが閉じたままだとエラーになる
  • 既に開いた状態で開いても問題なし
  • 別ブックは最後に閉じると便利

ということです。

一つずつ解説していきます。

別ブックを閉じたままだとエラーとなる

まず、注意する点です。

別ブックを閉じたまま、別ブックの値を取得しようとすると、エラーとなります。

やってみます。

Sub TEST3()
    
    Dim Wb1, Wb2
    Set Wb1 = ThisWorkbook 'このブック
    Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック ←エラーとなる
    
    'セルの値を取得する
    Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
    
End Sub

VBAコードが記載されている「元ファイル.xlsm」だけが開かれている状態です。

別ブックを閉じたままの状態

別ブックを閉じたままの状態

VBAコードを実行してみます。

別ブックが開かれていないので、エラーとなります。

エラーとなる

別ブックが開かれていないので、エラーとなる

エラーとなりました。

うっかり、別ブックを開いていない状態で実行すると、エラーとなります。

既に開いた状態で開いても問題なし

既に開いた状態で、ファイルを開いても問題ないです。

別ブックを開いた状態で、「ファイルを開いて」別ブックの値を取得してみます。

Sub TEST4()
    
    '別ブックを開いた状態で開く
    Workbooks.Open Filename:=ThisWorkbook.Path & "\取得先のファイル.xlsx"
    
    Dim Wb1, Wb2
    Set Wb1 = ThisWorkbook 'このブック
    Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック
    
    'セルの値を取得する
    Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
    
End Sub

では、別ブックを開いた状態で、試してみます。

別ブックを開いた状態

別ブックを開いた状態で、別ブックから値を取得してみます。

別ブックを開いた状態

では、実行してみます。

別ブックが開かれているか確認して別ブックから値を取得した結果

別ブックから、値を取得できました。

Excel 2016より前のバージョンだと、エラーが出るみたいなんですけど、ファイルを開いた状態でファイルを開いてもOKです。

別ブックは最後に閉じると便利

別ブックから値を取得する場合は、値を取得した後に、自動的に「閉じる」ようにしておくと便利です。

値を取得したあと、毎回、閉じるのは、面倒ですからね。

ブックを閉じるには、「Workbooks(ブック名).Close」で、できます。

引数に、「False」を入力すると、保存する際のメッセージを非表示にして保存することができます。

ブックが開かれているか確認して、別ブックから値を取得したあと、別ブックを閉じるVBAコードです。

Sub TEST5()
    
    '別ブックを開く
    Workbooks.Open Filename:=ThisWorkbook.Path & "\取得先のファイル.xlsx"
    
    Dim Wb1, Wb2
    Set Wb1 = ThisWorkbook 'このブック
    Set Wb2 = Workbooks("取得先のファイル.xlsx") '別ブック
    
    'セルの値を取得する
    Wb2.Worksheets("Sheet1").Range("A1:A3").Copy Wb1.Worksheets("Sheet1").Range("A1")
    Wb2.Close False '別ブックを閉じる
    
End Sub

「元ファイル.xlsm」だけが開かれています。

別ブックを閉じた状態

元ファイルだけが開かれている状態

では、別ブックから値を取得して、最後に別ブックを閉じてみます。

別ブックを開いて値を取得した後に閉じる

別ブックから値を取得して、最後に別ブックを閉じる

別ブックから値を取得することができました。

そして、別ブックは自動的に閉じられています。

この方がすっきりしていいですね。

おわりに

この記事では、別ブックのセルの値を取得する方法について、ご紹介しました。

別ブックから、セルの値を取得するには、まずは、別ブックを開くところから始まります。

別ブックを開けば、あとは、「Workbooks」を使って、セルの値を取得することができます。

別ブックからセルの値を取得できるようになると、自動化できる範囲が広がりますので、便利です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す