[[20101013140106]] 『閉じているブックのシートor値を抽出する方法』(みとぅを) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『閉じているブックのシートor値を抽出する方法』(みとぅを)

Excel2003,XP

 ブックAを開いた状態でマクロ実行し、
 ネットワーク上に置かれたあるブック(ブック名は不定、以後ブックBとする)から
 決められたシート名の値をブックAにコピーorシートそのものをコピー
 するような仕組みを作ろうとしています。
 ブックBの値は2万行、40列程度の規模です。

 ブックBの名前が日付で更新されるのでブックBが置かれているディレクトリを
 Dir関数で取得し、それをリストとしたコンボボックスで対象のブックを選択させ
 そのブック名=ブックBとなるようにしました。
 次にApplication.ExecuteExcel4Macroで閉じたブックの値を抽出できるところまでは
 調べたのですが詰まってしまいました。

 また、セルを直接参照する方法も試そうとしたのですが
 参照するブック名が不定なのでうまくいきませんでした。
 ='\\対象のディレクトリ\[ブックB.xls]Sheet2'!A1
 上記数式の[]内の指定でエラーになります。
 ブックAにはDir関数でファイル名を取得してあるのですがその値を
 []内に入れる術がわからないという状況です。

 そもそも値の直接参照とマクロで読み込むのは処理としてはどちらが軽いでしょうか?
 質問ばかりになってしまいますがアドバイスありましたら宜しくお願い致します。

 開かずに処理したい重要な理由があるのならわかりますが、
 処理を早くしたいのであれば、単純に開いてコピーが一番早いです。

 開いてコピーして・・・というのを見せたくないだけであれば
 application.screenupdating=false
 にしてから処理して、最後にTrueに戻せば過程は見えなくなります。

 あとはADOなんかを使っても出来るようですが、それは他の識者にお任せします。

 (momo)

 アドバイスありがとうございます。
 処理の早さでは開いたほうが早いんですね。

 特に開いてはいけないという決まりはないんですが
 閉じているほうがスマートかつ、元ファイルへの影響がないかなと思いまして

 上記アドバイスを参考にマクロを組み直しました
 元ファイルへの影響は読み取り専用で開いて解決しました。
 (みとぅを)

 読み取り専用で、かつ閉じるときに Close False にしておくと安全ですね。

 >閉じているほうがスマートかつ、元ファイルへの影響がないかなと思いまして

 開かずに処理したい。という方のほとんどがこれが理由ですね。
 個人の感覚だと思いますが、私は開いて処理するのがスマートだと思ってたりします。
 (momo)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.