• ベストアンサー

Excelで他Excelファイルのセルの値をVBAで参照したい時

こんにちは。 Excelで他Excelファイルにあるセルの値をVBAで参照したい時って、 場所をどう指定したらいいのでしょうか。 やろうとしている事ですが、 c:\1.xlsに記述するVBAで c:\2.xlsのsheet1のA1の値を参照して、 それとc1.xlsのsheet1のA1の値が一致した時に、 c:\2.xlsのsheet1のB1の値を、 C:\1.xlsのsheet1のB1に書き出そうとしています。 派遣就業先でAccessで作ればいいものを なぜか社員の方たちでExcelで作ってしまったため、 そのメンテに四苦八苦しています。(笑) ご存知の方ぜひ教えてください。 よろしくお願いします!

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

なんか質問の内容は「例えば」の例で実際のシートとは異なるように感じます。サンプルマクロの修正が必要そうですが… とりあえずオーソドックスに"2.xls"を開く方法でやってみます。 以下のマクロをALT+F11でVBE画面を開き、左上のVBAProjectの「ブック名右クリック」→「挿入」→「標準モジュール」で開く画面に貼り付けてください。ファイルパス、ファイル名、シート名は場合によって修正して下さい VBE画面を閉じ、1.xlsのSheet1を開いた状態で、マクロの実行はALT+F8でマクロ一覧を開き、マクロ名選択後「実行」です Sub Macro1() Dim actBk, wb As Workbook Dim psw As Boolean Const fPath As String = "C:\Temp\" 'ファイルのパス Const fName As String = "2.xls"  '探すファイル名 Const tSheet As String = "Sheet1" '探すシート名   Application.ScreenUpdating = False   Set actBk = ThisWorkbook   For Each wb In Workbooks '探すBookがすでに開いているか?     If wb.Name = fName Then       psw = True       Exit For     End If   Next wb   If psw = False Then '開いていないなら開く     On Error GoTo Err0     Workbooks.Open (fPath & fName)   End If   actBk.Activate   If Range("A1").Value = Workbooks(fName).Sheets(tSheet).Range("A1").Value Then     Range("B1").Value = Workbooks(fName).Sheets(tSheet).Range("B1").Value   Else     Range("B1").Value = "一致しません"   End If   If psw = False Then     Workbooks(fName).Close False   End If   Application.ScreenUpdating = True   Exit Sub Err0:   MsgBox Error   Application.ScreenUpdating = True End Sub

isurf
質問者

お礼

すばやい回答ありがとうございます。 てか私と代わってください。(時給安いですが・笑) おっしゃる通りで欲しい回答に合わせて私が例にしてしまっていて、 後の部分は何とか先人の質問回答履歴などを踏まえて 自分でも作り込みました。 知りたかった部分って、 Workbooks(fName).Sheets(tSheet).Range("A1").Value の所だと思います。 Range("A1")の部分は、 Range(i,3)とかにして、 for nextでループでiの部分をまわそうと思っています。 これからやってみようと思います。ありがとうございます。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#01です。 >Range(i,3)とかにして その書き方はエラーになります。その場合は  Cells(i, 3) になりますのでご注意下さい。

isurf
質問者

お礼

その通りですね。(笑) お礼を書き込んでから打ち間違えに気付いたのですが、 再度お礼を書き込めない感じになっていました。 派遣就業先のグループ内の人間関係が変で、 お膳立てして業務をそれぞれに割り振るため、 とっても苦労しています。 ありがとうございます。(てか本気で代わって欲しいです~)

isurf
質問者

補足

#01で頂いた Set actBk = ThisWorkbookの辺りも全然踏まえていませんでした。 (私には想定出来ないから疑問にもなっていなかった・・・) 本当にありがとうございます。 足向けて寝られない感じです。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

どの程度の事がやりたいのかはっきりしませんが、書かれた通りの単なるセルのチェックだけならVBAを使わなくても式だけで可能かも知れませんね。 2つのブックを開いて、セルにIF文などの記述すれば終わるのでは?

isurf
質問者

お礼

ありがとうございます。 私だけで作業が完結するならそれがいいのですが、 ここで言うc:\1.xlsのマクロの運用を別の方がやるので、 (別の方はボタンを押してマクロを実行するだけだと思っている) VBAとして作らなければならないようです。 私の説明が足りずすみません。

関連するQ&A