プロが教えるわが家の防犯対策術!

こんにちは。
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で作ってしまったため、
そのメンテに四苦八苦しています。(笑)

ご存知の方ぜひ教えてください。

よろしくお願いします!

A 回答 (3件)

なんか質問の内容は「例えば」の例で実際のシートとは異なるように感じます。

サンプルマクロの修正が必要そうですが…

とりあえずオーソドックスに"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
    • good
    • 1
この回答へのお礼

すばやい回答ありがとうございます。
てか私と代わってください。(時給安いですが・笑)

おっしゃる通りで欲しい回答に合わせて私が例にしてしまっていて、
後の部分は何とか先人の質問回答履歴などを踏まえて
自分でも作り込みました。

知りたかった部分って、
Workbooks(fName).Sheets(tSheet).Range("A1").Value
の所だと思います。

Range("A1")の部分は、
Range(i,3)とかにして、
for nextでループでiの部分をまわそうと思っています。

これからやってみようと思います。ありがとうございます。

お礼日時:2007/09/23 13:08

#01です。


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

この回答への補足

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

補足日時:2007/09/23 14:11
    • good
    • 0
この回答へのお礼

その通りですね。(笑)
お礼を書き込んでから打ち間違えに気付いたのですが、
再度お礼を書き込めない感じになっていました。

派遣就業先のグループ内の人間関係が変で、
お膳立てして業務をそれぞれに割り振るため、
とっても苦労しています。

ありがとうございます。(てか本気で代わって欲しいです~)

お礼日時:2007/09/23 13:25

どの程度の事がやりたいのかはっきりしませんが、書かれた通りの単なるセルのチェックだけならVBAを使わなくても式だけで可能かも知れませんね。



2つのブックを開いて、セルにIF文などの記述すれば終わるのでは?
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/23 13:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!