• ベストアンサー

複数のエクセルブック間でのデータの渡し方

こんにちは。環境:WinNT4.0、エクセル97 二つのエクセルブックがあります。(AとB) Aは個人のデータが記入されています。このAは個人個人のデータのため 実際には複数存在します。(A1、A2・・・) Bはこの個々のブックを集計したものになるため、Bを直接開くことはありません。 実際にAのみにデータを追加していって、それをBに反映させることは できるのでしょうか? 以上、お願いします。

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

  • ベストアンサー
  • yohsshi
  • ベストアンサー率55% (369/665)
回答No.2

VBAでイベントプロシージャーを使用して、AのデータシートをBの然るべきシートにコピーするようにすれば良いと思います。 Private Sub Workbook_BeforeClose() Sheets("Aのデータ").Cells.Select Selection.Copy Workbooks.Open Tinename:="B.xls" Sheets("Aデータ貼付先").Cells.Select ActiveSheet.Paste WorkBooks("B.xls").Close SaveChanges:=True End Sub 動作確認していませんが、Excel97だと上記のような形となると思います。

taukun
質問者

お礼

上記のやりかただとBを開けなければならず、ちょっと違うんです。 Bを開けてやるなら上記でOKだと思います。 回答ありがとうございます。

その他の回答 (2)

  • yohsshi
  • ベストアンサー率55% (369/665)
回答No.3

> ブックBのA1で=を入力し、アクティブ画面ををブックAに切替え(ウィンドウで)ブックAのA1を左クリックします。ブックBのA1は”=[A.xls]Sheet1!$A$1”となるはずです。 私はこれが可能でしたよ。但し表示は、=[A]Sheet1!$A$1 でしたけど。 同じ環境:WinNT4.0、エクセル97 です また、そのまま、=[A]Sheet1!$A$1というように打ち込んでもOKでした。 ちょっと謎です。

taukun
質問者

お礼

すいません、わかりました。 ウインドウ自体が複数になっていました。 2000とかだとファイルを開くごとにウインドウ(下のバー)が 増えていきますよね? NT(エクセル97のほう?)の場合は、メニューバーのウインドウの中に 追加されていくだけなんですよね。 おっしゃっていた方法はこっちのやり方みたいですね。 確かにその方法でできました。 ありがとうございました。

  • borg
  • ベストアンサー率56% (42/75)
回答No.1

簡単にブックBのSheet1のA1に、ブックAのSheet1のA1を表示させる場合、ブックAとブックBを両方開き、ブックBのA1で=を入力し、アクティブ画面ををブックAに切替え(ウィンドウで)ブックAのA1を左クリックします。ブックBのA1は”=[A.xls]Sheet1!$A$1”となるはずです。この後、A2以下からA10まで追加が予想されるとしたら、A1の計算式の行番号1の前の$を外し($A1の形)、A10までオートフィルを使ってコピーします。このあと先にブックAを閉じると計算式が'C\Winnt\Profiles\xxxxxx\デスクトップ\[A.xls]sheet1!A1'となるのを確認できると思います(ブックAがデスクトップに保存されているとした場合)。これでリンクは確立できたのでブックBを閉じ保存します。ブックAのA2以降にデータを追加した後保存し、ブックBを開けば確認できると思います。このときブックBを開く際、他にリンクされているうんぬんのメッセージが出るので、これを反映させる方を選択します。そうしないと意味がありません。あとブックAも新規に作成する場合は、必ずブックAから先に保存してください。

taukun
質問者

お礼

> ブックBのA1で=を入力し、アクティブ画面ををブックAに切替え(ウィンドウで)ブックAのA1を左クリックします。ブックBのA1は”=[A.xls]Sheet1!$A$1”となるはずです。 それがなりませんでした。=を入力後、アクティブ画面をAに切り替えてA1セルを 選択して、Bに戻しても=以降なにも表示されません。シート間の場合はそれでいけるのですが、Book間だとうまくいきません。 回答ありがとうございます。

関連するQ&A