|
▼Kein さん:
回答ありがとうございます。
Set ステートメントを用いることで,名前付き仮保管を行うわけですね。
コピー作業のコードも自動記録にて作成したものをそのまま流用していたため,何かまわりくどい書き方だなと思っていたため,簡潔な表し方を示していただき,大変勉強になりました。
ついでで申し訳ないのですが,もう一つ質問させてください。
> MyB.Worksheets(i).Range("A1:A50").Value = _
> ThisWorkbook.Worksheets(i).Range("A1:A50").Value
と簡潔に表していただきましたが,これがThisWorkbookではない場合について教えて下さい。
実際にはマスターブックはマクロ専用ブックであり,コピー元となるデータ自体,このブックには書かれていません。作成中のマクロの大まかな流れを下記に示します。
Sub MainPgm()
:
Call test() '下記参照
:
'この区間に解答いただいたコードを挿入することになります。
MyB.Worksheets(i).Range("A1:A50").Value ・・・
:
Call test3() 'ここで最終計算を実施。オブジェクトはMainPgm()と異なる。
:
End Sub
Sub test() 'オブジェクトはMainPgmとは異なる
Call test2() 'これによって"sample.out"が作成されます。
Open "sample.out" For Output Shared As #1
Workbooks.OpenText Filename:="sample.txt", _
: '条件付でファイルを開きます
End Sub
OpenTextによって開いたブックがデータ元ブックとなるのですが,このデータをMyBに貼り付けていくにはどのようにすればいいのでしょうか?
賢くないやり方としては,
> MyB.Worksheets(i).Range("A1:A50").Value = _
> ThisWorkbook.Worksheets(i).Range("A1:A50").Value
前の行に
Windows("sample.out").Activate
と記入しておけば,
MyB.Worksheets(i).Range("A1:A50").Value = _
ActiveWorkbook.Worksheets(i).Range("A1:A50").Value
と置換えることが可能なのでしょうが・・・
|
|