- ベストアンサー
複数のファイルにまたがるマクロについて
- 複数のファイルにまたがるマクロとは、あるファイルに入っているデータを複数の別ファイルに一度にコピーするためのマクロのことです。
- 例えば、ファイルAに株価データが入っていて、ファイルB、ファイルC、ファイルDにそれぞれコピーしたい場合、個々のファイルにマクロを作成するのではなく、一つのマクロで一度にコピーすることができます。
- また、このマクロを動かす際には、コピー先のファイル(ファイルB、ファイルC、ファイルD)を開いていなくてもコピーすることが可能です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マクロというのは,手動ではイチイチ手順を追って操作して行かなきゃならない一連の操作を,1クリックでつるつるっと続けて自動的に行ってくれる自動手順のことです。 つまり,「一度にコピーする」んじゃなく,「手動では3回コピーしなきゃならないところを,マクロに3回コピーさせる動作を1クリックで行う」ワケです。あるいは「ブックBCDを開かずにコピーする(貼り付ける)」じゃなく,「Bを開いて貼り付ける。続けてCを開いて貼り付ける。続けてDを開いて貼り付ける。(必要に応じて更にBCDを保存して閉じる)」といった動作を,1クリックで行います。 #言葉を換えると,いかなマクロといえども「エクセルに出来ないこと」はマクロを使っても出来ません。 たとえば「ブックBCDに一度に貼り付ける」とか。「開いていないブックに貼り付けを行う」とか。 前置きが長くなりましたが。 コピー元のAブックに以下のマクロを登録して実行する。もちろんAを開いた状態で作業を開始する。 sub macro1() application.screenupdating = false ’BCDを開く workbooks.open filename:="c:\不明の場所の\B.xls" workbooks.open filename:="c:\不明の場所の\C.xls" workbooks.open filename:="c:\不明の場所の\D.xls" ’BCDに貼り付ける(一体どこにある何を?) thisworkbook.worksheets("コピー元のシート名").range("A1").copy _ destination:=workbooks("B.xls").worksheets("シート名").range("A1") thisworkbook.worksheets("コピー元のシート名").range("A1").copy _ destination:=workbooks("C.xls").worksheets("シート名").range("A1") thisworkbook.worksheets("コピー元のシート名").range("A1").copy _ destination:=workbooks("D.xls").worksheets("シート名").range("A1") ’BCDを保存して閉じる workbooks("B.xls").close savechanges:=true workbooks("C.xls").close savechanges:=true workbooks("D.xls").close savechanges:=true application.screenupdating = true end sub #余談 試しに「BCDを開く →BCDに貼り付ける →BCDを保存して閉じる」というマクロを示しましたが,もしそうしたければ「Bを開いて貼り付けて閉じる,Cを開いて貼り付けて閉じる,Dを開いて貼り付けて閉じる」といった手順にしても勿論構いません。 趣味と,実際にヤリタイ事に応じて合理的に工夫してご自分でもマクロを(=どういう手順で具体的に一体”何”をすればごジブンのヤリタイ事が実現できるのか,脳トレしながら考えて)作成してみてください。
その他の回答 (1)
- R48
- ベストアンサー率24% (683/2741)
コマンドは忘れましたが、マクロの中にファイルを指定して開き、コピーペーストして保存することは可能ですよ。 マクロをファイルAにBCDそれぞれ用で作成すればできます。 因みにマクロで別の名前で新しくファイルを作成することも可能です。
お礼
回答ありがとうございます。いろいろ試してみます。
お礼
お忙しい中、ご丁寧な回答を頂きありがとうございました。マクロの考え方が良く理解できました。やはり1つ1つ手順を踏んでやるしかないようですね。頂いたマクロ活用させて頂き、いろいろ試行錯誤してみます。ありがとうございました。