[[20070114183415]] 『他Bookのセル』(かなこ) >>BOT

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

 

『他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.