すみません。エクセル初心者なのですが、仕事で作らなければいけなくなったのでご教授いただけたらと思います。
エクセルのシート内にボタンオブジェクトを作成し、そのボタンを押すだけで
1.指定したシートのみを別ブックとして書き出す(この場合はボタンのあるシート)。
その際に指定セル内の名前(例えばA1セルに記入された内容)でファイル名を付与して、指定場所に保存する。
2.上記シートには別ブックとして保存した場合はいらない部分(上記ボタンオブジェクトなど)があるので、その部分は削除して保存したいです。必要な内容は(印刷する場合であれば)1ページ目と2ページ目です。ボタンオブジェクトは3ページ目になるよう配置してあります。必要な情報かどうかはわかりませんが一応記入しておきます。
3.シート内のセル(ここではA1セル)に書かれた内容を1.で作成された物とは別ブックに書き出し、一覧表を作成する。こちらはデータベースの用な物として使用したいので、順次追加されて行くようにしたいです。例えば上記シートが作成された日付とその内容(ここではA1セル)で追加されてゆく感じで。
4. 3.で作成したブックに順次1.の指定シートを追加(コピー)する。
一応4.の順次シートのコピーを追加すると言うのは何となく出来たのですが、同じファイル名になってしまうとその時点で動作が止まってしまいました。参考書には「同じ名前なら自動でファイル名(1)となる」と「(1)」が付与されるとあったのですが、上手く作成してくれず止まってしまいました。
職場からデータを持ち出せないので、作成した内容を記載する事が出来なくてすみません。
よろしくお願いいたします。
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」の状態が理解出来ていないと、おかしな挙動になりますので、ご注意ください。
ありがとうございます。
どのようにコードを書けば良いのか流れがわかったので助かりました。
教えてもらった事を参考に辞典とにらめっこしながら作ろうと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/05/24 08:33
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
VBAでブックを非表示で開いて処...
-
エクセルで参照しているデータ...
-
エクセル2016です。「ブッ...
-
エクセルの関数 ENTERを押...
-
Excel(2010)のフィルターが保...
-
フォルダ内の複数ファイルから...
-
エクセルで50行ごとに区切った...
-
Excel VBAでブックを閉じる時、...
-
エクセルで「ディスクがいっぱ...
-
エクセルで別ブックをバックグ...
-
VBAでブック保護非保護を判定す...
-
アクセスvbaでエクセルブックを...
-
エクセルで複数のシートを別フ...
-
エクセルでウィンドウの枠固定...
-
WorkBooksをオープンさせずにシ...
-
VBA: ブックをアクティベイトで...
-
エクセル 複数のブックを一度...
-
vbaでpdfを開いて1ページ目のみ...
-
印刷しようとすると強制終了に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
エクセルで参照しているデータ...
-
WorkBooksをオープンさせずにシ...
-
Excel(2010)のフィルターが保...
-
フォルダ内の複数ファイルから...
-
Excelでブックの共有を掛けると...
-
複数ファイルから特定シートの...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
エクセルファイルを開かずにpdf...
-
エクセルで別ブックをバックグ...
-
エクセルで50行ごとに区切った...
-
外部ブック参照が#REF!になって...
-
エクセル2016です。「ブッ...
-
エクセルの関数について教えて...
-
エクセルシートの一部を送りたい
-
ブックのピボットを別ブックに...
-
Excel起動時に特定のワークシー...
おすすめ情報