VBA練習問題解答
練習問題17(ブック・シートの操作の練習)解答

Excelマクロ練習問題集、エクセルVBAの学習教材
公開日:2013年5月以前 最終更新日:2019-11-03

練習問題17(ブック・シートの操作の練習)解答

マクロVBA練習問題17の解答ページです。

マクロVBA練習問題

※まず最初に
 A列にパス、B列にブック名(エクセルのファイル名)を、
 実際のあなたのPC環境に合わせて入力して下さい。

・シート「練習17_回答」を新規に追加し、
 そのA列にブック名
 B列にそのブックの全シート名の一覧を入れて下さい。
・繰り返し実行できるように、
 シート「練習17_回答」が既に存在した場合は、
 一旦削除してから、シート追加して下さい。

練習問題用のExcelファイル
 A     B
パス ブック名
C:\User Book1.xls
C:\User サンプル.xls
C:\User test.xls
   
   

※上記表の全体を選択し、コピー(Ctrl+C)の後、エクセルのシートのA1セルに貼り付け(Ctrl+V)してください。

以下が完成イメージです。
マクロ VBA サンプル画像

では、お考えください。
すぐに解答を見ずに、必ず自力で書けるとこまででも良いので書きましょう。

シンキングタイム

シンキングタイム開始


シンキングタイム終了

当サイトのコンテンツ
ExcelマクロVBA入門
この「VBA入門」シリーズは、マクロVBAを習得し、日々のExcel作業を効率化・自動化できるようになることを目指します。VBAが初めての方でも無理なくステップアップできるよう、基礎から丁寧に、そして段階的に解説を進めます。そのため、シリーズ後半では入門レベルに留まらず、実務レベルで通用する高度なテクニックや幅広い知…

書くべきマクロVBAが分からない時は、
ここでじっくり勉強してから再チャレンジしてください。

マクロVBA練習問題解答

では解答のマクロVBAコードです。
※.Valueは適宜省略しています。

Sub 練習問題17()
  Dim i As Long
  Dim j As Long
  Dim wb As Workbook
  Dim ws As Worksheet
  Dim wsAns As Worksheet
  Application.DisplayAlerts = False
  For Each ws In Worksheets
    If ws.Name = "練習17_回答" Then
      ws.Delete
      Exit For
    End If
  Next
  Application.DisplayAlerts = True
  Worksheets.Add after:=Worksheets("練習17")
  Set wsAns = ActiveSheet
  With wsAns
    .Name = "練習17_回答"
    .Cells(1, 1) = "ブック名"
    .Cells(1, 2) = "シート名"
  End With
  j = 2
  With Worksheets("練習17")
    For i = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
      Set wb = Workbooks.Open(.Cells(i, 1) & "\" & .Cells(i, 2))
      wsAns.Cells(j, 1) = wb.Name
      For Each ws In wb.Sheets
        wsAns.Cells(j, 2) = ws.Name
        j = j + 1
      Next
      wb.Close SaveChanges:=False
    Next
  End With
End Sub

Application.DisplayAlerts = True
のタイミングは、どこでも良いですし、書かなくても問題ありません。
でも、なるべく適切な位置に書くようにしましょう。

For~Each
ではなく、
For カウンター = 1 To Worksheets
・・・
Next
での処理も書けるようにしておきましょう。
シート削除なら

For i = 1 To Worksheets.Count
  If Worksheets(i).Name = "練習17_回答" Then
    Worksheets(i).Delete
    Exit For
  End If
Next

シート操作はマクロVBAにおいて頻繁に行われる基本事項になります。
決して難しくはなく、ほとんど定型文として使いまわせるものです。

以下も参考にして下さい。

ExcelマクロVBA入門.第54回.Windowオブジェクト
Windowオブジェクトは、ブックやシートの見方を変えることのできるもので、エクセルで「ウィンドウ」と表現されているものをマクロVBAで扱う時のオブジェクトになります。エクセルのリボンでは「新しいウィンドウ」や「ウィンドウ枠」といった言葉で表現されているものです。
ExcelマクロVBA入門.第58回.コレクションとは
同種のオブジェクトを複数まとめたものを「コレクション」と呼びます、ただしコレクションもオブジェクトの一種です。例えば、Workbookオブジェクトが複数まとまったものは「Workbooksコレクション」Worksheetオブジェクトが複数まとまったものは「Worksheetsコレクション」オブジェクト名が単数形であ…
ExcelマクロVBA入門.第59回.コレクション処理(For Each)
ForEachは、コレクションの各要素に対して繰り返し処理を実行します。コレクションはオブジェクトの集まりですので、ForEachは、コレクションの中から、個々のオブジェクトを取り出して処理する場合に使用します。コレクションの全ての要素に対しての処理が終わるとループは終了します。
ExcelマクロVBA入門.第65回.シートの追加、名前の変更(Add,Name)
マクロVBAでシートを挿入(新規追加)したり、名前を変更する場合の解説です。シートを挿入すれば、大抵の場合はシート名も変更することになりますので、シート挿入→シート名変更、この一連のVBAをセットで覚えておきましょう。シートの挿入 VBAでシートを挿入するには、Sheets.Addメソッド、Worksheets.A…
ExcelマクロVBA入門.第66回.シートのコピー・移動・削除(Copy,Move,Delete)
シートのコピーや移動をしたり、また削除する場合の説明です。マクロVBAでは、雛形シートをコピーして使ったり、不要なシートを削除することは頻繁にあります。シートのコピー・移動には、Worksheet.Copyメソッド、Worksheet.Moveメソッド これらの、WorkSheetオブジェクトのメソッドを使用します。



同じテーマ「マクロVBA練習問題解答」の記事

練習問題14(行の挿入・削除の練習)解答
練習問題15(Withとオブジェクト変数の練習)解答
練習問題16(WorksheetFunctionの練習)解答
練習問題17(ブック・シートの操作の練習)解答
練習問題18(Dir関数の練習)解答
練習問題19(総合練習1)解答
練習問題20(総合練習2)解答
練習問題21(総合練習3)解答
練習問題22(総合練習4)解答
練習問題23(総合練習5)解答
練習問題24(再帰呼出し)解答


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ