advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 27303 for マクロ (0.014 sec.)
[[20070309074125]]
#score: 2167
@digest: ce76c6269a99094c4ff94c4f722d4b55
@id: 29326
@mdate: 2007-03-09T02:02:00Z
@size: 3192
@type: text/plain
#keywords: datawb (20721), ロ. (15138), this (8515), プッ (7698), トプ (6598), タ. (5497), 示的 (5194), ト") (4437), 今テ (4200), ロ2 (3626), ト大 (3438), 部ク (3394), 明示 (2474), ト的 (2004), property (1780), ク( (1752), アウ (1670), タフ (1657), ウト (1614), workbook (1558), マク (1146), 変感 (1143), クロ (1030), 加工 (924), 行中 (902), ット (844), sheets (816), activate (789), workbooks (774), wb (732), cells (667), ブッ (623)
『実行中のマクロのブック名を取得する』(ろっしい)
今、マクロのファイル マクロ.xls と データのファイル データ.xls が同時に開いている状況だとします。このとき、マクロ側のシートで データの加工用に作業を行いたいと思い(データファイルは書き換えません)、 <作業> マクロの途中で明示的に Workbooks.Open Filename:="データ.xls"でデータファイルを開いた後にそのデータを配列に入れてから windows(マクロ.xls").Activate として、マクロ.xls のシートに配列データを吐き出して加工しています。 質問は、マクロを修正して、ファイルをマクロ2.xls に書き換えるとき、いちいちソースを確認 してwindows("マクロ2.xls").Activateと書き換えているのですが、現在自分が 実行させているマクロの名前を(自動的に)取得し、マクロのブックの名前が変わってもソースを書き直さなくても済むようにする方法はあるでしょうか?というものです。 ご教授頂けると幸いです。よろしくお願いします。 ---- どちらも変数で処理すれば楽ですよ? 例: Dim ThisWb As Workbook, DataWb As Workbook Set ThisWb = ThisWorkbook '<-マクロの書かれているブック(マクロ.xls) Set DataWb = Workbooks.Open("データ.xls") そして、Obejct(Workbook/Sheet)を明示的に参照すれば、Activete/Selectは 特殊なケースを除けば必要なくなります。これにより処理速度もアップします。 (seiya) ---- 回答ありがとうございます。今テスト的にやってみたのですが、うまくいきました。 2つのブックを同時に開いた状態で、 Sub Macro1() Dim this_wb As Workbook, dataWb As Workbook Set this_wb = ThisWorkbook '<-マクロの書かれているブック(マクロ.xls) Set dataWb = Workbooks.Open("データ.xls") this_wb.Sheets("アウトプット").Cells(1, 1).Value = 100 End Sub とやってみるとマクロの中のシート「アウトプット」にデータが書き込まれていました。一つだけ質問なのですが、「Obejct(Workbook/Sheet)を明示的に参照すれば」と仰っておられるのは、私のマクロのthis_wb.Sheets("アウトプット"). の部分だと解釈してよろしいのでしょうか? 重ね重ねすみませんが、これが分かると全部クリアになるので宜しくお願いします (ろっしい) ---- そのとおりです。 this_wb.Activate Sheets("アウトプット").Select Cells(1,1).Value = 100 が、ご提示された一行で処理できますよね? 特に、Cells プロパティには必ずSheet object を明示的に参照しないと エラー、もしくは予想し得ない結果をもたらすことがあります。 (seiya) ---- 丁寧なコメント大変感謝しております。ありがとうございました。今後とも宜しくお願いしますm(__)m (ろっしい) ---- ろっしいさん、 もう一つCells property を使用した場合のよくあるケースで Range(Cells(1,1),Cells(5,5)) のように使用する場合にも各Cells propertyにObjectを参照する必要があります。 this_wb.Sheets("アウトプット").Range(this_wb.Sheets("アウトプット").Cells(1,1), this_wb.Sheets("アウトプット").Cells(5,5)) これを With ステートメントで this_wb.Sheets("アウトプット") を参照すると With this_wb.Sheets("アウトプット") .Range(.Cells(1,1), .Cells(5,5)) End With となります。 これ、とっても大事です。 (seiya) ---- 私が先日やったミス。ブックの各シートのA1のデータを使ってそれぞれのシートの 名前にしようとしたら思い切り「実行時エラー」。初心者レベルのミスですが、 油断するとやりますね。 (純丸)(o^-')b ※スレを見てて思い出しました。 For Each sh In Worksheets sh.Name = Range("A1").Value Next sh ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200703/20070309074125.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97054 documents and 608269 words.

訪問者:カウンタValid HTML 4.01 Transitional