• ベストアンサー

excelVBAについて。

ActiveWorkbook.ActiveSheet.Range(″◯◯″) ThisWorkbook.ActiveSheet.Range(″◯◯″) 前者は、新しく開いたブックのセルの記述で、後者は、元々開いていた(プログラムの書いてある)ブックのセルの記述です。これらは、どういう所で使えるexcelVBAのプログラムなのでしょうか?教えて頂けると幸いです。で、ActiveWorkbook.ActiveSheet.Range(″◯◯″) ThisWorkbook.ActiveSheet.Range(″◯◯″) この2つのプログラム片はどのように、使用するのでしょうか?教えて頂けると幸いです。

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

  • ベストアンサー
  • mnymnymny
  • ベストアンサー率24% (36/147)
回答No.1

xlsmを作り、VBAのIDEを立ち上げて、 Workbooks.Open ThisWorkbook.Path & "Test.xlsx" ThisWorkbook.Worksheets(1).Range("A1:A5").Copy ActiveWorkbook.ActiveSheet.Range(″A1:A5″) ActiveWorkbook.Close SaveChanges:=True これでいけそうじゃないですか。コードのあるエクセルから新規エクセルを作って、そこにデータをコピーして、閉じる。 それだけです。

zasx1097
質問者

補足

すみません。このプログラム片そのまま使う事でお願いしたいのですが。教えて頂けると幸いです。

その他の回答 (1)

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.2

まず共通している"Range(″◯◯″)"の部分は、Excelのセルを指定する部分ですから、この後にセルの値を書き換えたり、色を変えたり、といった指示が続きます。  このプログラムの違いは『ActiveWorkbook』か『ThisWorkbook』か、の差です。読んだままですが、前者は「今現在アクティブになっているブック」を指定し、後者は「このプログラムが書かれているるブック」を指定します。  プログラムを書いたブックでのみ作用するマクロならどちらを使っても同じことですが、作業補助用のマクロなどの場合、アクティブなブックとプログラム用のブックを並行して操作するため、こうした指定を行います。  使用例としては色々ありますが、例えば私が自分用に作成したマクロブックであれば、『ActiveWorkbook』の選択しているセルから『ThisWorkbook』へ書式をコピーし、任意のタイミングで張り付ける、というような使い方をしていますね。  ペイントなどのソフトである"スポイト"的な使い方のマクロです。こういう気には『ActiveWorkbook.ActiveSheet.Range(″◯◯″)』と『ThisWorkbook.WorkSheet(○).Range(″◯◯″)』を使います。 補足:基本的に『ThisWorkbook』を使用する時には『ActiveSheet』は使いません。これはアクティブなシートを指定するので、『ThisWorkbook』はシートを明示する事が普通です。 どこで目にしたコードかは分かりませんが、そのまま使用しない事をおすすめします。

関連するQ&A