- ベストアンサー
Excel2013で乱数に応じたマクロ付きファイルを自動的に起動する方法について
- Excel2013で乱数を発生させ、その数に応じたマクロ付きファイルを自動的に起動する方法はありますか?A1からA6までのマクロ付きファイルがありますが、ファイルXを作成して乱数に応じたファイルの起動とマクロの実行を自動化したいです。
- Excel2013を使用しています。A1からA6までのマクロ付きファイルを用意していますが、手動で起動し、マクロを実行する必要があります。そこで、ファイルXを作成して、乱数を発生させ、その結果に応じてファイルの起動とマクロの実行を自動化したいです。
- Excel2013を使用しています。A1からA6までのマクロ付きファイルがありますが、手動で起動してマクロを実行する必要があります。ファイルXを作成し、乱数を発生させて、それに応じてファイルの起動とマクロの実行を自動化できる方法はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
そちらの環境に合わせてください。 Option Explicit Sub Test() Dim r As Integer Dim s As String r = Int(Rnd * 6) + 1 s = CStr(r) Workbooks.Open "D:\Programming\A" & s & ".xlsm" '←フォルダの位置関係 Application.Run "A" & s & ".xlsm!Test" '←「Test」を開いたファイルのマクロの名前 End Sub 現在、「A~.xlsm」ファイルを開いたときのマクロの名前は同一、という前提で組んでいます。 また、フォルダ名を直接指定していますが、もし、いろんなフォルダで実行する可能性がある場合は、元のファイルと「A~.xlsm」ファイルが同じフォルダなら、方法はあります。 Set o = CreateObject("Scripting.FileSystemObject") のあと、 Set f = o.GetFolder(".") とすれば、「f」に現在のフォルダ位置が取り込まれますので、「f & "\A~.xlsm」で開くことができます。
その他の回答 (3)
- Prome_Lin
- ベストアンサー率42% (201/470)
回答No.3です。 まず、「A1~5」のファイルは、開きますか? 次に、「A1~5」のマクロの「Sub ~」の名前は、具体的にどうなっていますか? 私が試したときは、すべて「Sub Test()」で試しましたので、プログラム中でも、直接「Test」と固定していますが、もしかして、ファイルごとに、名前が違うのでしたら、それを教えてください。 書き直します。
お礼
ご回答有難う御座いました。 何回もやると、やはり教えて頂きましたやり方で、上手く処理できました。
補足
ご回答有難う御座います。 下記で実行しますと、正常に乱数が発生しました。 なぜか、コードを途中で止めると、同じ数(例えば5)が繰り返されます。 rとsを強制的に初期化することはできないでしょうか? Sub Test() Dim r As Integer Dim s As String r = Int(Rnd * 6) + 1 s = CStr(r) MsgBox r End Sub
- kkkkkm
- ベストアンサー率66% (1742/2617)
開くファイルのThisWorkbookモジュールでWorkbook_Openを使えば起動時に自動でマクロが実行されますがそれを利用しないという事でしたら プロシージャ名がtestで開くファイルが同一フォルダにあるとした場合 Workbooks.Open ThisWorkbook.Path & "\A2.xlsm" シートモジュールなら Call Application.Workbooks("A2.xlsm").Sheets(シート名).test 標準モジュールなら Application.Run "a2!Test" でいかがですか。
お礼
ご回答有難う御座いました。
- mdmp2
- ベストアンサー率55% (438/787)
1~6 の乱数を生成するには、つぎの式で良いと思います。 =ROUND((RAND()*5+1),0) Xファイルを手動で開くとマクロが自動実行され、それによりファイル1~6が開き、開いたファイルのマクロが自動実行されるようにするには、すべてのファイルのマクロの名前を Auto_Open() とするか、イベントプロシージャ(Workbook_Open) を使います。 ブックを開くコードは、(余計なお世話かもしれませんが) Workbooks.Open "D:\1.xlsx"
お礼
ご回答有難う御座いました。
補足
ご回答有難う御座います。 試したのですが、なぜか、A5だけ マクロが実行されます。