- ベストアンサー
エクセルでボタン一つで複数マクロを実行する方法
- エクセル初心者でも簡単に実現できる、ボタンを押すだけで複数のマクロを実行する方法をご紹介します。
- 特定のシートのみを別ブックとして書き出し、指定セル内の名前でファイル名を付与して保存する方法を詳しく解説します。
- シート内のセルに書かれた内容を別ブックに書き出し、一覧表として利用する方法について解説します。順次追加される仕組みを作成します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>一応4.の順次シートのコピーを追加すると言うのは何となく出来た とお書きですので、作業の流れをお示しすれば、ご自分でコードはお書きになれるかと存じますが。。。 【1-1】指定したシートのみを別ブックとして書き出す 「指定したシート」のシートタブを [右クリック] - [移動またはコピー(M)...] し、[移動先ブック名(T):] を「(新しいブック)」にして [コピーを作成する(C)]、という動作を [新しいマクロの記録] すると、 Sheets("指定したシート").Copy というコードが得られます。 【1-2】その際に指定セル内の名前(例えばA1セルに記入された内容)でファイル名を付与して、指定場所に保存する。 【1-1】の時点で、コピーされたブックがアクティブになっていますので、 ActiveWorkbook.SaveAs "指定場所" & Range("A1").Value でイケルかと存じます。 【2】・・・いらない部分・・・は削除して保存したい これも、その作業を ActiveWorkbook で処理すればOKです。 ちなみに、【1-2】より前に、行なえばよいかと存じます。 【3-2】こちらはデータベースの用な物として使用したいので、順次追加されて行くようにしたいです。 「順次追加」される形ですので、別ブックは、予め作っておいて、それを呼び出すようにするのが順当かと存じます。 【3-1】シート内のセル(ここではA1セル)に書かれた内容を1.で作成された物とは別ブックに書き出し、一覧表を作成する。例えば上記シートが作成された日付とその内容(ここではA1セル)で追加されてゆく感じで。 【1-2】の作業の後で、一旦、「別ブック」を閉じます。次に、【3-2】のブックを開いておいて、 Sheets("一覧表").Select With Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = Date .Offset(, 1).Value = ThisWorkbook.Sheets("指定したシート").Range("A1").Value End With というようなコードを書きます。 ちなみに、マクロのコードは最初のブックに書くということで、「最初のブック」を「ThisWorkbook」としました。 【4】3.で作成したブックに順次1.の指定シートを追加(コピー)する。 これも、【1-1】と同様の操作をマクロの記録で行なうと、 Sheets("指定したシート").Copy After:=Workbooks("データベース.xls").Sheets(1) というコードが得られます。 ということで、 【1-1】、【2】、【1-2】、「別ブック」を閉じる、【3-2】、【3-1】、【4】、「データベース」を保存終了 という流れを、「最初のブック」の標準モジュールに記載して、そのマクロを「シート内にボタンオブジェクト」に割り当てればOKでしょう。 最後になりましたが、 >ボタン一つで複数のマクロを実行する とお書きですので、複数のマクロを書いておいて、ボタンから呼び出すマクロには、 Call Macro1 Call Macro2 Call Macro3 というように記載してもOKです。 が、操作するマクロの内容をよく吟味して、ブック・シートの「Select」・「Active」の状態が理解出来ていないと、おかしな挙動になりますので、ご注意ください。
お礼
ありがとうございます。 どのようにコードを書けば良いのか流れがわかったので助かりました。 教えてもらった事を参考に辞典とにらめっこしながら作ろうと思います。