• 締切済み

--- マクロで可能でしょうか? ---

test1.xlsの作業を記録していて、同様にtest2.xlsの作業を記録しており、test5.xlsの作業まで記録しています。 これらの作業をtest1.xlsの作業をするだけで、test5.xlsまでの作業をやってくれるというのは無理でしょうか? 上手く伝わらなかったらすいません。 追記していきますので、教えていただけないでしょうか?

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.6

A No.5です。 お知りになりたいのが、 >もしブックが開いていなければ この部分であれば、「vba ブックが開いているか調べる」で検索すれば、サンプルコードが沢山みつかります。 >開くコードが必要になります この部分なら、マクロの自動記録をして調べてください。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

他のブックを開いて、指定したマクロを実行させる事例を参考URLで回答した事がありますので、参考になさってください。 実際に必要な部分は、下記の2行ですが。Activateしなくてもマクロの実行は可能だと思いますが、動作状況が見られる方が良いと考えて入れてあります。 Workbooks(targetBookName).Activate Application.Run targetBookName & "!" & "Macro1" もし、ブックが開いてなければ、開くコードが必要になります。 ただ、あるブックに記述したマクロで、他のブックを操作する事は可能ですので、一カ所にまとめて記述すれば、このような事で悩まなくても済みます。

参考URL:
http://okwave.jp/qa4101265.html
makisi3
質問者

お礼

ありがとうございます。 >もし、ブックが開いてなければ、開くコードが必要になります これがとても知りたいのですが、教えて頂けないでしょうか?

  • kuma56
  • ベストアンサー率31% (1423/4527)
回答No.4

とりあえず、各ブックにマクロが組んであるんですね? それならば、test1.xlsを開いたところで"マクロの記録"を開始して、マクロの処理を開始してください。 test1.xlsのマクロ処理が終わったところで(マクロの記録を続けたまま)手作業でtest2.xlsを開きそのブックのマクロを実行・・・test5.xlsまで同様につづけてマクロ処理(いつも行っている作業ね)をしてやって、一連の作業が終わったところで、マクロの記録停止ボタンを押してください。 するとブックを開きながら、各マクロを実行していくマクロが出来上がります。 もちろん必要に応じて作業済みのブックを閉じるとか、次のブックに移る際にMsgboxで聞いてくるなどの、入れておくと便利かも。

noname#63240
noname#63240
回答No.3

別々に記録してあるマクロを1回の実行で済ませたいと言う事ですか? そうならば、作業5までを一回のマクロの記録ですれば良いのでは?

makisi3
質問者

お礼

回答ありがとうございます。 他ファイルへの干渉方法がわからないのですが、どうすればいいのでしょうか? たとえば、test1.xlsのマクロを実行し終わったあとにtest2.xlsのマクロを行いたいのですが、他ファイルへの干渉方法がわからず、出来ない状態です。 もし、教えていただく内容が多いようでしたら、そのような説明が載っているサイトを紹介していただけないでしょうか? 勉強しにいきます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問における、作業の関連が判りません。仕事関連なので文章にするのが大変なのかも知れないが。 こういう表現しか出来ない状態では、プログラムを組むという論理的な作業は無理と思います。少しの課題の違いデータの有り様で、プログラムコードがガラっと変わる場合は良くあります。 プロでもシステムを作る人は、ドキュメンテーションが相当作業の ウエイトを占めているはずです。その段階で熟慮しているのです。 すっきりと文章化することから始まると思います。 それに本件は、本コーナーの質問規約に反した、課題の丸投げ的です。

noname#91724
noname#91724
回答No.1

マクロが記録されているところ=VBEの起動及び編集は大丈夫ですか? それぞれのファイルがどういう状態で存在するのかわからないので、 (開いているのか、とか)大筋だけ書くと、 Macro1、Macro2とある場合、 Sub Macro1() Range("A1").Select   Call Macro2 ←これ End Sub Sub Macro2() Range("B1").Select End Sub という具合に書くとA1をセレクトしたあとにB1をセレクトします。 (Call は明示的にしているだけでなくても可)

makisi3
質問者

お礼

他ファイルは全て閉じています。 >Sub Macro1() >Range("A1").Select >  Call Macro2 ←これ >End Sub なのですが、Macro2はtest2.xlsのものだとします。 上記内容で、機能してくれるのでしょうか? 他ファイルの干渉が必要だと感じるのですが・・・試してみます。 ありがとうございます。

関連するQ&A

専門家に質問してみよう