← コード一覧へ戻る
実務ブック

別のExcelファイルを開いて値を読む

指定したExcelファイルを開き、A1の値を今のブックへ転記します。

実行前に確認

  • 信頼できる.xlsxのみを指定してください。集計!A1は上書きされます。読み取り元のブックを開いたまま実行しないでください。

1サンプルコード

Sub 別ファイルから値を読む()
    Dim sourceBook As Workbook, b As Workbook
    Dim sourcePath As String, message As String
    sourcePath = "C:\Data\売上.xlsx"
    For Each b In Application.Workbooks
        If StrComp(b.FullName, sourcePath, vbTextCompare) = 0 Then
            MsgBox "読み取り元を先に閉じてください"
            Exit Sub
        End If
    Next b
    On Error GoTo Failed
    Set sourceBook = Workbooks.Open(Filename:=sourcePath, UpdateLinks:=0, ReadOnly:=True)
    ThisWorkbook.Worksheets("集計").Range("A1").Value = _
        sourceBook.Worksheets("Sheet1").Range("A1").Value
    sourceBook.Close SaveChanges:=False
    Exit Sub
Failed:
    message = Err.Description
    On Error Resume Next
    If Not sourceBook Is Nothing Then sourceBook.Close SaveChanges:=False
    On Error GoTo 0
    MsgBox message
End Sub
表で見る処理のイメージ実行前・実行後のセルを見比べる

外部ブックのSheet1!A1から「集計」シートへ値を読み込みます。

A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。

実行前

このブックの「集計」

実行前のサンプル。列記号と行番号でセルの位置を確認できます。
A
1—

実行後

このブックの「集計」

実行後のサンプル。列記号と行番号でセルの位置を確認できます。
A
11200(注目セル)

色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。

読み取り元C:\Data\売上.xlsxのSheet1!A1の計算結果を1200と仮定。転記先A1には値だけが入り、数式・書式はコピーしません。読み取り元は変更せず閉じます。 強調は注目するセルの目印です。実際のセルの色・書式を再現するものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    読み取り元の練習用.xlsxにSheet1を、コード保存先のブックに「集計」を用意します。sourcePathと両方のシート名を実物へ合わせます。

  3. 3

    読み取り元ブックは先に閉じておき、集計!A1に残したい値がないことを確認します。

  4. 4

    実行するSubの内側にカーソルを置き、F5キーを押します。

  5. 5

    読み取り元のSheet1!A1の値が集計!A1へ入り、元ブックは保存せず閉じられます。既に元ブックが開いていた場合は中止します。

使っている機能の公式ドキュメント(Microsoft Learn)