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

解決済みの質問

Excelを2つ起動してセルを参照する方法

ご質問させていただきます。
Excel2007を2つ起動して、他方のシートのセルを参照したいのです。
具体的に説明いたしますと、1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。Excel(2)のsheet1のA1セル~A48セルまでcalculateイベントでリアルタイムに変化する値が入っています。それらの値をExcel(1)のsheet2のB1セル~B48セルで参照したいのです。
できるのでしょうか?
どなたか教えていただけないでしょうか?
よろしくお願いいたします。
もしVBAを使わなくてもできるようでしたら、そちらの方法も教えてください。
よろしくお願いいたします。

投稿日時 - 2011-03-10 13:10:54

QNo.6583744

困ってます

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

幾つか方法はありますが,


方法1)
>エクセルを2つ開いて

判っていてそういう言い方をしているのだとすると,やはりそういう危うい方法はやめて1つのエクセルの中で2つのブックを開く運用にすれば,単純にリンク貼り付けの参照式で直ちに値を参照してくる事が出来ます。
数式例:
=[Book2.xls]Sheet1!A1
通常はこれが最も安全かつ簡便な方法です。

方法2)
敢えて2つエクセルを開いて運用しなければならない事情があってそうしているのでしたら,Book2のcalculateイベントの中で併せてブックを保存させ,ブック1の方では保存された更新後の値を外部参照式でこまめに参照させるような事でも出来ます。
数式例:
='c:\test\[book2.xls]Sheet1'!A1
なお,この参照式は「再計算」では更新できないので,もしマクロを使うならupdatelinkをします。


方法3)
DDEを使ってExcel(1)から直接Excel(2)に外部リンクすることも,一応出来ます。
簡易には,たとえば元のブックのA1からA48のセル範囲にTargetと名前を定義しておき,
=INDEX(excel|book2.xls!Target,ROW(A1))
以下コピー
などのような式で,目的のA1以下の値を表示できます。
リンクは即座に更新されます。

投稿日時 - 2011-03-10 13:30:23

お礼

keithin 様

ご回答ありがとうございます。

>敢えて2つエクセルを開いて運用しなければならない事情があってそうしてい>るのでしたら

はい。そのような事情があります。
教えていただいた2つ目の方法なのですが、1つのセルが1秒間に複数回データ更新される時もあるので、今回は3つ目の方法でやってみたいと思います。そこで、質問なのですが、Excel(1)と(2)はそれぞれ同じデータベンダーとすでにDDEリンク接続しているのですが、そのような場合でも教えていただいた方法でExcel(1)と(2)をDDE接続できるのでしょうか?
私はExcelもVBAも初心者なので、もう一つお伺いしたいのですが、以下のプロシージャだけでDDE接続できるのでしょうか?
ご回答よろしくお願いいたします。

worksheets("Sheet2").range("B1").value=INDEX(excel|book2.xls!Target,ROW(A1))

投稿日時 - 2011-03-10 17:51:48

ANo.1

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

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

回答(2)

ANo.2

>そのような場合でも教えていただいた方法でExcel(1)と(2)をDDE接続できるのでしょうか?

まず実際にご自分の手を動かして,やってみてください。何か競合する要素が無ければ,出来ます。
そもそもそんな状況だなんてお話は聞いてませんし,現状ではあなたのデータベンダーが何でどんなDDE接続をしているのか不明なので,出来るともデキナイとも答えられません。
(知ってるならやってみれば?ってふつー思いますよ)


>マクロ

そちらも実際にご自分の手を動かして,まずやってみたらどうでしょう。
ていうか,あなたがそのマクロで「一体何をしたい」のか不明なので,どんなマクロにしたらいいのか回答出来ません。
敢えて空想すると
worksheets("Sheet2").range("B1:B48").formula= "=INDEX(excel|book2.xls!Target,ROW(B1))"
みたいな事でしょうか。

お話しが広がりそうなので,この件は改めて何をしたいのかきちんと考えてから,新しいご相談として別途投稿して下さい。

投稿日時 - 2011-03-10 18:31:12

お礼

keithin 様

ご回答ありがとうございます。
私の質問が言葉足らずで申し訳ございません。
私はVBA初心者で、書籍やネットを色々と参照しながらプロシージャを作成しています。そのため、プロシージャの作成に非常に時間がかかってしまいます。また、平日の9:00~15:00の間でしかデータベンダーとDDE接続してテストすることができないので、明日のテストに備えてあえて質問させていただきました。
言葉足らずで申し訳ありませんでした。
この度は、ご回答ありがとうございました。

投稿日時 - 2011-03-10 21:29:45

あなたにオススメの質問