エクセルでボタン一つで複数マクロを実行する方法

このQ&Aのポイント
  • エクセル初心者でも簡単に実現できる、ボタンを押すだけで複数のマクロを実行する方法をご紹介します。
  • 特定のシートのみを別ブックとして書き出し、指定セル内の名前でファイル名を付与して保存する方法を詳しく解説します。
  • シート内のセルに書かれた内容を別ブックに書き出し、一覧表として利用する方法について解説します。順次追加される仕組みを作成します。
回答を見る
  • ベストアンサー

エクセルにてボタン一つで複数のマクロを実行する

すみません。エクセル初心者なのですが、仕事で作らなければいけなくなったのでご教授いただけたらと思います。 エクセルのシート内にボタンオブジェクトを作成し、そのボタンを押すだけで 1.指定したシートのみを別ブックとして書き出す(この場合はボタンのあるシート)。 その際に指定セル内の名前(例えばA1セルに記入された内容)でファイル名を付与して、指定場所に保存する。 2.上記シートには別ブックとして保存した場合はいらない部分(上記ボタンオブジェクトなど)があるので、その部分は削除して保存したいです。必要な内容は(印刷する場合であれば)1ページ目と2ページ目です。ボタンオブジェクトは3ページ目になるよう配置してあります。必要な情報かどうかはわかりませんが一応記入しておきます。 3.シート内のセル(ここではA1セル)に書かれた内容を1.で作成された物とは別ブックに書き出し、一覧表を作成する。こちらはデータベースの用な物として使用したいので、順次追加されて行くようにしたいです。例えば上記シートが作成された日付とその内容(ここではA1セル)で追加されてゆく感じで。 4. 3.で作成したブックに順次1.の指定シートを追加(コピー)する。 一応4.の順次シートのコピーを追加すると言うのは何となく出来たのですが、同じファイル名になってしまうとその時点で動作が止まってしまいました。参考書には「同じ名前なら自動でファイル名(1)となる」と「(1)」が付与されるとあったのですが、上手く作成してくれず止まってしまいました。 職場からデータを持ち出せないので、作成した内容を記載する事が出来なくてすみません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答No.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」の状態が理解出来ていないと、おかしな挙動になりますので、ご注意ください。

youichi___
質問者

お礼

ありがとうございます。 どのようにコードを書けば良いのか流れがわかったので助かりました。 教えてもらった事を参考に辞典とにらめっこしながら作ろうと思います。

関連するQ&A

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

  • エクセル マクロ 複数ファイルを1枚のファイルに

    お世話になります。 私の業務で、多数のエクセルシートを1つのファイルにまとめ、 その上で縦串を通して合算を出す、という作業が頻発しております。 様々な資料で同様の作業が行われますので、簡素化ができればと思い、 質問させていただきます。 [作りたいマクロ] 『元データ』のフォルダに入っているエクセルファイルの 『指定シート(仮にA2セルにシート名を指定できるものとします)』を、 当マクロの入ったエクセルファイルにシートを追加したい。 その際、全てのシート名が同一になってしまうので、 『指定したセル(仮に各シートのB2セル)』をシート名にする。 ●各シートは全て同じフォーマットですので、書式等そのままコピーでOKです ●元のファイル名はバラバラになっていることが多いです

  • マクロ実行ボタンがコピー出来ない

    Excel2013を使っています。OSはWIN7です。 とあるマクロを実行する為のボタンが組み込まれているシートがあり、 月が変わるごとに、(そのマクロボタン付きの)「テンプレート」と名前を付けているシートを「移動またはコピー」からコピーして、同じファイルないに新しくシートを付け足していく方法でシートを増やしていっていました。 先月までは上記の方法でまったく問題なく、「テンプレート」というシートと同じ内容のシートがマクロボタン付きでコピー(同じファイル内に新しく作成)出来ていたのですが、急に出来なくなりました。 とても困っています。 どうしたらいいのでしょうか?

  • Excelマクロでpdfを自動作成したい

    複数のExcelシートからなるブックを、pdfとして出力しています。 現在はJustSystemのJustpdf2ドライバを使っているのですが、これだとマクロで完全自動化できないことが判明しました。 ・PDFのフアイル名と保存場所 ・上書きかどうか をいちいち聞いてきます。 Excelマクロで完全自動化するには、 ・ファイル名、保存場所をマクロで指定できる。もしくはExcelファイルと同じ場所に同じファイル名で作成する ・1シート目は上書き、2シート目からは現存のpdf (前シートのpdf)に続けて保存できるように、マクロで「上書き」か「続けて保存」かを指定できる ことが必要なのですが、JustSystemに問い合わせたところ、Justpdf2では無理とのことでした。 上記のように、複数シートからなるExcelブックを、マクロで完全自動でPDF化できるドライバ、方法がありましたら、お教えください。

  • エクセル ボタンのVBA 

    印刷のボタンを作成しました。 原本シートに書き込んで終了した時に保存ボタンを押したら シート名を記載して保存するVBAが一個あります それとは別に印刷ボタンを作成したいのですが 原本シートの表には未記入の場所には条件式でセルに色を つける条件を付けてます。 印刷ボタンを押した時 全部のセルの色を白色に戻し指定した範囲の部分を印刷するボタンを作れないでしょうか? 例 A1:K73まで印刷するなど

  • エクセルの特定のシートのみを保存するマクロ

    を作成できればと思っています。 このブック内にはたくさんのシートがあります。 毎日データ更新するのですが、そのうち1シートのみ、他の人に送信する必要があるので、たとえば(理想は)編集が済んだ時点で、あるシートに設けたコマンドボタンのようなものをクリックしたときに、その必要な1シートがコピーされて、別のエクセルファイルとして保存されるのが理想です。 マイドキュメント内の、「ファイル」という名前のファイルに保存をしたいと思っています。 今は、必要なシートのシート名をクリックして、コピーを選び、新しいシートを作成して、、、という作業をしています。これを端折ることができないか、と考えております。 なお、このシートを保存するとき、そのシート名は、ある特定のセルの入力値になることが理想です。 というのも、そのマクロが起動するたびに、全く同じ名前で上書き保存されていくのは困りますので、、、 どなたかお詳しい方がいらっしゃいましたらどうぞお願いいたします。

  • エクセルのシート1枚だけ保存するマクロ

    いつもお世話になります。 エクセルのシート1枚だけを別ファイルに保存したいのです。 過去ログを見て、そのサブをモジュールに貼り付けて試しているのですが、うまく行きません。 アドバイスをお願いします。 状況は以下の通りです。 シート1に帳票のフォーマットを作成してあります。 シート2にデータが並んでいます。 シート2のデータを順番にシート1に表示して印刷するマクロは作成しました。ただセルの値をコピーするだけなので単純です。 そのシート1だけを保存したいのです。 Sheet1.SaveAs (ファイル名) だとブック全体が保存されてしまいます。 ワークブックの保存になっていてもいいのですが、内容はシート1だけを保存したいのです。 シート1にはイメージコントロールが3個あり、画像も入れ替わりますが、式は入っていません。 ファイル名は帳票の個別名称を使用しますので重複はしません。 シート名にしなければならない場合でも処置できます。 皆様の助言をお願いいたします。 エクセル2003を使用しています。

  • Excel VBA 複数ブックのシート結合方法

    複数ブックの特定のシート(都度指定)のみを結合するマクロを組みたいです。 例えば、「ファイルマージ前」というフォルダがあって、その中には数値のみ違う同フォーマットのアンケート集計結果が保存されています。 このフォルダ内には50ほどのブックが保存されていて、そのブック内の「N表」というシート(50あるブック内全てに存在するシート)を新規ブック(マクロを組み込むブック)の1シートに上から順に値コピーしていきたいです。 今後、別の機会でファイルマージが必要になった際にも使用出来る様に、シート名を都度指定(セルにシート名を入力して、そのシート名を参照する等)出来るようにしたいのですが、自分の知識とネット等で調べた情報のみではうまく作成出来ませんでした。 詳しい方のお知恵をお借りしたいです。 宜しくお願い致します。

  • 【Excelマクロ】ファイルを開き、マクロを実行する方法を教えてください

    マクロをひとつのブックに保存してマクロボタンを作成しています。そのマクロを別のファイルに実行したいのですが、その記述がわかりません。 [ファイルを開く]ダイアログから指定したファイルを開き、その開いたファイルに対して、すでに別のブックに保存してあるマクロを実行するには、どのように記述したらよいのでしょうか? ご存知の方いらっしゃいましたら、よろしくお願いいたします。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

専門家に質問してみよう