[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『参照するブックを開かずに更新するには』(初心者)
WinXP、Excel2003です。
=INDIRECT("'["&A1&".xls]"&A2&"'!"&A3)
A1:ブック名、A2:シート名、A3:セル名とします。
参照するブックを開いていれば上記式でOKなのですが、
開かずに更新するにはどうすれば良いかご教示お願いします。
INDIRECT関数を使う限り、開かないと更新できません。 必要なA3セルの値が複数のシートやブックに分散している、という データ構造を見直したほうが良いかもしれません。 [みやほりんの失敗談] http://miyahorinn.fc2web.com/schooltxt/Ex060120.html (みやほりん)(-_∂)b
ちょっと回答がらんぼうすぎじゃあ〜りませんか? もしかしたら、方法を知りたいだけかもしれませんよ? 回答ではなくてすみません。 (てつろう)
私も乱暴かもしれませんがINDIRECT関数では、 みやほりんさんの言うとおりEXCELの仕様上無理だと思います。 ただのリンクであれば出来ますので普通にリンクさせておいて ブック名やシートの変更は置換で行うなどの工夫が必要かと思います。 (momo)
確かにこのようなケースでは、「VBAマクロで4.0マクロ関数を利用して取得する」 という手法が定番ですね。 [[20060301163921]] 『セルに行をずらしながら値複写』(anton) [[20060531111135]] 『他のファイルにシートをコピーペーストする以下のコードをファイルを開かずに実行したい [[20070816221034]] 『ブックを開かずにリンク元からのデータを更新』(市民チュ) [[20080131032458]] 『ブックを開かずにデータを書き込む方法はありますか?』(しろーと) [[20100129104731]] 『開いていないファイルからのデータ転記マクロ』(あらくま) [[20100208214907]] 『ExecuteExcel4Macroの使用方法』(わかあゆ) 「開かずに更新する」という問題を解決するということに限れば 穏便な方法かもしれません。 (みやほりん)(-_∂)b
以前どこかの質問に回答したのですが失念しましたが 開かずにやりたい理由が必要かな?と感じます。 VBAでやる場合なら開いて配列に格納して閉じるというのを画面更新を止めてやれば一瞬ですので 開いている事を「意識しないで」出来ますし本当に開きたくないのならCSVでデータを保存しちゃいます。
数式でリンクの場合は前述のとおりですが大変な思いをしてまで開かずに処理をする理由が わからない所ですね。 (momo)
相談文からだけ想像しますと、A1、A2セルを書き換えるだけで他の部分の データもパッ、パッ、と切り替わる、みたいなことがしたいのではないでしょうか。 (みやほりん)(-_∂)b
最近、こんなユーザー定義関数を作りました。 試してみてください。
ichinose
皆様アドバイスありがとうございます。
説明不足でしたが、みやほりんさんのご想像の通りです。 A1やA2には〜月や〜日が入り、月毎のブックの1日〜31日まであるシートを参照する形をイメージしていました。 参照元を開きたくなかったのは、年配の方々も使用するので少しでも手間を減らしたかったからです。
私には難しい事ばかりなので、データ構造の見直し含めて勉強しながら参考にしたいと思います。 (初心者)
>開かずに更新するにはどうすれば良いかご教示お願いします。 こう思っている人の盲点と思うところ。 参照先ブックは、開かないと更新されないと言うところ。 (最近のはよく知らんけど。)
古いデータを取得してどうすのだろう。 上っ面ばかり見ている人が多いような気がする。 エクセルの数式で、IF関数も知らなかったころの自分よりレベルが低いように思う。 (BJ)
>参照先ブックは、開かないと更新されないと言うところ。 確かにファイルはオープンしないとデータの取得や更新をするのは非常に困難ですが、 Excelにブックとして開かなくても更新はできます。 Accessなどない方がブックを擬似テーブルに見立ててsqlでデータを取得・更新する練習にもなるしね!!
私も仕事では、ExcelブックをADOで接続なんて事はしませんが、そういうコードをたまに見かけます。 見れば、どっかで使ってみようと思いますが、仕事では機会がないので 近い質問には、敢えてコードを投稿して試していただく場合もありますよ!! だって、ベストの投稿だけでなくてもよいのでしょう? こういう掲示板は・・・。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28395;id=excel
ここでもExcelにあるブックに対し、Adoで接続している事例があります。 この頃は、ブックをAdoで接続するコードをよく試させてもらいました。 おかげで開いたブックに対して、ADOで接続し、処理すると使用メモリが増加し、 元に戻らない という現象を確認できました。 私にとっては、貴重な資料です。
色んなことを試してみることは決して無駄ではないと思いますけどねえ
今回の関数も以前seiyaさんが
こんな投稿をしていました。 へえ、別インスタンスのExcel内でExcel4Macroを使ってるんだと これだとユーザー定義関数でも読み込めるんだあ と新発見。 他に方法がないかと思って、ADOで接続したコードです。
レベルが低いのは自分が一番知っています、だから掲示板で勉強しています
ichinose
>だって、ベストの投稿だけでなくてもよいのでしょう? こういう掲示板は・・・。 そう思います。ichinoseさんステキ(ハート) (てつろう)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.