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

このQ&Aのポイント
  • Excel2007を2つ起動して、他方のシートのセルを参照する方法を教えてください。
  • 具体的な手順としては、Excel(1)とExcel(2)という2つのExcel2007を起動し、Excel(2)のsheet1のA1セル~A48セルまでの値をExcel(1)のsheet2のB1セル~B48セルで参照する方法を教えてください。
  • もしVBAを使わずにこの操作が可能な場合は、別の方法も教えてください。
回答を見る
  • ベストアンサー

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

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

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

幾つか方法はありますが, 方法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以下の値を表示できます。 リンクは即座に更新されます。

hoully
質問者

お礼

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))

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

>そのような場合でも教えていただいた方法でExcel(1)と(2)をDDE接続できるのでしょうか? まず実際にご自分の手を動かして,やってみてください。何か競合する要素が無ければ,出来ます。 そもそもそんな状況だなんてお話は聞いてませんし,現状ではあなたのデータベンダーが何でどんなDDE接続をしているのか不明なので,出来るともデキナイとも答えられません。 (知ってるならやってみれば?ってふつー思いますよ) >マクロ そちらも実際にご自分の手を動かして,まずやってみたらどうでしょう。 ていうか,あなたがそのマクロで「一体何をしたい」のか不明なので,どんなマクロにしたらいいのか回答出来ません。 敢えて空想すると worksheets("Sheet2").range("B1:B48").formula= "=INDEX(excel|book2.xls!Target,ROW(B1))" みたいな事でしょうか。 お話しが広がりそうなので,この件は改めて何をしたいのかきちんと考えてから,新しいご相談として別途投稿して下さい。

hoully
質問者

お礼

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

関連するQ&A

  • Excelで参照のセル値の変化でVBAを実行する

    Excelで別シートの値を参照しているセル値の変化でVBA実行イベントを起こすにはどういう方法があるのでしょうか。 例えばSheet1のA1は、Sheet2のA1の最初の4文字を参照にしているとします。この場合、Sheet1のA1の中は『=LEFT(Sheet2!A1,4)』です。 これでSheet1のA1の参照結果が変化すればVBAが実行される方法のアドバイスを頂きたいです。 調べて見たらSheet3を作業シートにして、Sheet3の方でSheet1のA1を参照にしてCalculate(シートが再計算された時に発生)イベントで実行するという一つの手を見つけましたが、他にもスマートな良い方法があるのか気になったので質問させてもらいました。よろしくお願いします。

  • あえてエクセルを2つ起動してセルを参照する方法

    ご質問させていただきます。 Excel2007を2つ起動します(あえて2つ起動する必要があります)。1つのExcel上に2つのブックを開くのではありません。 1つ目のExcel2007をExcel(1)と呼び、2つ目のExcel2007をExcel(2)と呼ぶことにします。 Excel(1)で開くファイル名は「板とチャート」で、Excel(2)で開くファイル名は「ティック」です。 Excel(1)とExcel(2)は同一のデータベンダーとDDE接続しており、平日の午前9時~午後3時までリアルタイムでデータが更新されます。 それぞれ受信したデータをVBAやワークシート関数で加工して各シートに表示しています。 このDDE接続はデータベンダーが提供するものであり、プロシージャはパスワードでロックがかかっており、私は見る事もいじる事も出来ませし、そもそもVBAに関して初歩的な知識しかないため、DDE接続自体をよく理解しおらず、いじれません。 今回やりたいことを以下に記します。 Excel(2)のファイル名「ティック」ワークシート名「連続」のQ1,Q2,Q3,Q4,Q5,Q6セルのそれぞれの値をExcel(1)のファイル名「板とチャート」ワークシート名「板」のC5,C13,C21,C29,C37,C45に表示させ、同様に、Excel(2)のファイル名「ティック」ワークシート名「連続」のR1,R2,R3,R4,R5,R6セルのそれぞれの値をExcel(1)のファイル名「板とチャート」ワークシート名「板」のI5,I13,I21,I29,I37,I45に表示させたいのです。 なお、Excel(2)のQ1~Q6セル及びR1~R6セルの値はそれぞれIF関数で"A","B"または空欄にリアルタイムで変化します。 従いまして、その"A","B",空欄をExcel(1)のファイル名「板とチャート」ワークシート名「板」のC5,C13,C21,C29,C37,C45セル及びI5,I13,I21,I29,I37,I45セルにリアルタイムに反映させたいのです。 なお、Excel(2)のIF関数の"A","B"または空欄を判定する各セルはcalculateイベントで1秒間に複数回更新されるカウンターになっています。 従いまして、IF関数の"A","B"又は空欄は1秒間の間に変化することもあります。 以上の事を実現いたしたく、以下を試してみました。 Sub できるかな() Dim xlApp As Application Set xlApp = GetObject("C:\Users\hoully\Desktop\ティック.xlsm", "Excel.Sheet").Application Worksheets("板").Range("C5") = xlApp.Worksheets("連続").Range("Q1").Value End Sub 実行すると、VBAprojectにVBAproject(ティック.xlsm)が追加されるのですが、 「実行時エラー 9 インデックスが有効範囲にありません。」 と表示され、Worksheets("板").Range("C5") = xlApp.Worksheets("連続").Range("Q1").Valueが黄色になります。 Worksheets("板").Range("C5") = xlApp.application.Worksheets("連続").Range("Q1").Valueとやっても同じ事が起こりました。 次に、以下を試してみました。 Sub できるかな2() worksheets("板").range("C5").formula= "=INDEX([C:\Users\hoully\Desktop\ティック.xlsm]sheet2!Q1:R6,1,1))" End Sub 「実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです」 と表示されてしまいます。 私はExcelもVBAも初心者で、非常に単純なプロシージャを作るにも本やネットを参照しなければ作れないレベルです。 そのため、どこが悪いのかよくわかりません。 どなたか教えていただけないでしょうか? よろしくお願いいたします。

  • エクセルでセルの自動参照をしたい

    使用するのはExcel 2010です。 Sheet1に一覧表を作り、Sheet2にてセルA1にリストでAという値を選択すると セルA2にSheet1のセルA1の数値を参照して入力するようにしたいのですが どのような方法があるかよく分からないので教えていただきたいです。 当方、初心者程度の知識しかなくVBAについての解説サイトを見ても、どのようにすればよいか 考えつきませんでした。 もし、VBAを使用しないとできないのであれば恐縮ですが「サルでも理解できるクラス」で教えていただけると助かります。 どうかよろしくお願いします。

  • エクセルのセル参照、一つずつ参照セルをずらしていきたい

    エクセルのセル参照の方法について教えてください。 2つのシートがあって、 ひとつのシートにはC4,D5,E6…というように行と列がひとつずつ増えていくところに値が入力されています。 このシートから、C4,D5,E6…のセルの値を取り出して 別のシートのA1,A2,A3…に縦に並んで表示させたいのですが、どのようにセルを参照させればC4,D5,E6…という 行と列がひとつずつ増えていくセルを参照できるでしょうか? よろしくお願いいたします。

  • Excelの被参照セルを知りたいです。

    ExcelのあるBookのあるセルの値を参照している別のブックがあります。 この値を参照しているBookのSheet、Cellを知りたいです。 つまり、この値はどこから参照されているのでしょうか? 過去ログも調べましたが、該当ありませんでしたので質問させていただきます。 よろしくお願いします。 環境はExcel2003SP2、WinXPSP2です。

  • 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で作ってしまったため、 そのメンテに四苦八苦しています。(笑) ご存知の方ぜひ教えてください。 よろしくお願いします!

  • エクセルのセル参照について

    エクセル2007でワークシートAのセル参照をワークシートBのセル(20カ所位)で設定しています。このワークシートBのセル参照のワークシート名をAから新たに作成するワークシートCに効率良く変更する方法はありますか?

  • エクセルで他のシートを動的に参照するには

    エクセルに関する質問です。 他のシートのセルを参照する場合、たとえば、 =Sheet1!D5 というように入力すると思います。 質問は、このシート名とセル名に、他のセルの値を使用したいのですが、方法はあるのでしょうか? できれば、VBAを使わずに。。。 質問が分かりづらいと思いますので、具体的に説明すると、A1にシート名("Sheet1")が、B1にセル名("D5")が入っている場合に、C1にその値(=Sheet1!D5)が表示されるようにしたいのですが、方法はあるでしょうか?

  • Excelセルの参照

    Excelにdataとnという2シートがあります。dataシートのA列3行目~22行目にデータが縦入力されており、以降B列、C列とデータ入力が繰り返されます。 nシートでdataシートの入力値参照のため、あらかじめdataシートの参照リンクを貼っておきたいのですが、nシートのデータは横並びであるせいか、参照リンクをうまくコピーすることができません。 dataセルのA3セルの値をnシートのD1に=data!A3と貼り付けて、W1(=data!A22)まで数式を自動コピーできないでしょうか。また、D2~W2まで=data!B3~=data!B22など参照リンクをコピーで作成できないでしょうか。 よろしくお願いいたします。 横並びに参照する必要があるのですが、

  • エクセル セルの参照

    エクセルのセルの参照でうまくいかないので教えてください 今sheet1のA1に「10:00」、B1に「12:00」と入力されています シート2の任意のセルに「10:00~12:00」というふうに表示したく =Sheet1!A1&"~"&=Sheet1!B1  と入力したのですが、 0.4166666666666667~0.5 というふうに返ってきます 「10:00~12:00」というふうに表示する方法はありませんか? あったら教えてください

専門家に質問してみよう