別の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 | |
|---|---|
| 1 | 1200(注目セル) |
色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。
読み取り元C:\Data\売上.xlsxのSheet1!A1の計算結果を1200と仮定。転記先A1には値だけが入り、数式・書式はコピーしません。読み取り元は変更せず閉じます。 強調は注目するセルの目印です。実際のセルの色・書式を再現するものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
読み取り元の練習用.xlsxにSheet1を、コード保存先のブックに「集計」を用意します。sourcePathと両方のシート名を実物へ合わせます。
- 3
読み取り元ブックは先に閉じておき、集計!A1に残したい値がないことを確認します。
- 4
実行するSubの内側にカーソルを置き、F5キーを押します。
- 5
読み取り元のSheet1!A1の値が集計!A1へ入り、元ブックは保存せず閉じられます。既に元ブックが開いていた場合は中止します。