こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBAで他のExcelファイルのデータ取得

Excel初心者です。

Excel VBAで他のExcelファイルのワークシートのデータを取得するのにはどうしたらいいのでしょうか。

よろしくお願いします。

投稿日時 - 2002-06-28 13:10:23

QNo.301952

困ってます

質問者が選んだベストアンサー

Book-AからBook-Bを参照する例を書いてみました。
Book-Bが開いていなければ、Book-Bを開いています。Book-BのパスとBook名はセットして下さい。


Book-Aの標準モジュールに貼りつけます。

Sub SansyoBook()
  Dim wbA As Workbook 'Book-A
  Dim ws1A As Worksheet 'Book-Aのシート1

  Dim wbB As Workbook 'Book-B
  Dim ws1B As Worksheet 'Book-Bのシート1
  Dim wbBpath As String 'Book-Bのパス
  Dim wbBname As String 'Book-BのBook名
  Dim wbBOpenFlg As Boolean 'Book-Bを強制的に開いたらTrue

  'Book-BのパスとBook名
  wbBpath = "C:\・・・・\・・・\・・・\" '自分で定義します
  wbBname = "okBook2.xls" '自分で定義します

  Application.ScreenUpdating = False

  'Book-AとBook-Aのシート1を定義
  Set wbA = ThisWorkbook
  Set ws1A = wbA.Worksheets("Sheet1")

  'Book-Bが開いてなかったらエラールーチンで開く
  On Error GoTo ErrorHandler
  'Book-BとBook-Bのシート1を定義
  Set wbB = Workbooks(wbBname)
  On Error GoTo 0
  Set ws1B = wbB.Worksheets("Sheet1")

  '//////////////// 参照例 ///////////////////////////////////
  'Book-Aのシート1のA1に、Book-Bのシート1のB1を書き込み
  ws1A.Range("A1").Value = ws1B.Range("B1").Value
  'Book-Aのシート1のA2~A10に、Book-Bのシート1のC1~C9を書き込み
  ws1A.Range("A2:A10").Value = ws1B.Range("C1:C9").Value
  '////////////////////////////////////////////////////////////

  'Book-Bを強制的に開いたら閉じる
  If wbBOpenFlg Then
    wbB.Activate
    wbB.Close
  End If
  wbA.Activate

  Application.ScreenUpdating = True

  Exit Sub

ErrorHandler:
  'Book-Bが開いてなかったら開く
  Workbooks.Open wbBpath & wbBname
  Set wbB = Workbooks(wbBname)
  wbBOpenFlg = True
  Resume Next
End Sub

投稿日時 - 2002-06-28 15:32:22

お礼

nishi6さん、ありがとうございました。
うまくいきました。

投稿日時 - 2002-06-28 16:47:52

ANo.1

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問