プロが教えるわが家の防犯対策術!

すみません。エクセル初心者なのですが、仕事で作らなければいけなくなったのでご教授いただけたらと思います。

エクセルのシート内にボタンオブジェクトを作成し、そのボタンを押すだけで

1.指定したシートのみを別ブックとして書き出す(この場合はボタンのあるシート)。
その際に指定セル内の名前(例えばA1セルに記入された内容)でファイル名を付与して、指定場所に保存する。

2.上記シートには別ブックとして保存した場合はいらない部分(上記ボタンオブジェクトなど)があるので、その部分は削除して保存したいです。必要な内容は(印刷する場合であれば)1ページ目と2ページ目です。ボタンオブジェクトは3ページ目になるよう配置してあります。必要な情報かどうかはわかりませんが一応記入しておきます。

3.シート内のセル(ここではA1セル)に書かれた内容を1.で作成された物とは別ブックに書き出し、一覧表を作成する。こちらはデータベースの用な物として使用したいので、順次追加されて行くようにしたいです。例えば上記シートが作成された日付とその内容(ここではA1セル)で追加されてゆく感じで。

4. 3.で作成したブックに順次1.の指定シートを追加(コピー)する。

一応4.の順次シートのコピーを追加すると言うのは何となく出来たのですが、同じファイル名になってしまうとその時点で動作が止まってしまいました。参考書には「同じ名前なら自動でファイル名(1)となる」と「(1)」が付与されるとあったのですが、上手く作成してくれず止まってしまいました。
職場からデータを持ち出せないので、作成した内容を記載する事が出来なくてすみません。

よろしくお願いいたします。

A 回答 (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」の状態が理解出来ていないと、おかしな挙動になりますので、ご注意ください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/05/16 02:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!