[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『他Bookのセル』(かなこ)
マクロで 例えばSeet1のA1の値を取得する場合 Sheet1.Range("A1") としますよねぇ それでは A というBookに BというBookのSheet1のA1の値を取得するには どうすれば良いのでしょうか。教えて下さい よろしくお願いします Excel2003 WindowsXPです
ブックBが開いているか否かで回答が違ってきます。
開いていなかったら、
Dim wb1 As Workbook Dim wb2 As Workbook Set wb1 = ThisWorkbook Set wb2 = Workbooks.Open("D:\marbin\test.xls") wb1.Worksheets("Sheet1").Range("A1").Value = wb2.Worksheets(1).Range("A1").Value wb2.Close Set wb1 = Nothing Set wb2 = Nothing
開いていたら、
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = Workbooks("B.xls").Worksheets("Sheet1").Range("A1").Value
(MARBIN)
なお、二つ目のコードは両方のブックが同じインスタンスで開いていないと エラーになります。 (MARBIN)
(MARBIN)さん 二つ目のコードで出来ました。 ありがとうございました。 もう一つ質問なのですが一つ目のコードの Set wb1 = Nothing Set wb2 = Nothing は何を意味するものなのでしょうか よろしかったらお教えください (かなこ)
メモリの開放をします。
Dim wb1 As Workbook ・ ・ Set wb1 = 〜
で変数wb1にメモリが割り当てられています。
処理終了時に Set wb1 = Nothing
とすることによって wb1に割り当てられたメモリが開放されます。
通常は、マクロ終了時に自動的に開放されますが、念のため 入れています。
「オブジェクト型は全て解放すべき」という意見もみたこと があります。
※私自身あまり詳しくないので、識者の方の回答がいただけ たら幸甚です。 (MARBIN)
こういう議論をしたことがあります。 [[20041124212113]]『VBA:変数の開放の必要性』(みやほりん) (みやほりん)(-_∂)b
(MARBIN)さん(みやほりん)さんありがとうございます Set wb1 = ThisWorkbook は私もマクロの中で使うことがありますが Set 〜 = Nothing は初めて見たので、ちょっとした疑問だったのですが 奥が深いですね。 『VBA:変数の開放の必要性』見させて頂きましたが 分からない用語が多く理解するには程遠いですが、なんとなくメモリ内に残ってしまう事がある というように解釈しました。 私も念のため 入れていこうと思います。 勉強になりました。 (かなこ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.