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

Excelマクロ練習問題集、エクセルVBAの学習教材
最終更新日:2015-10-22

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

練習問題17の回答ページです、



問題

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

・シート「練習17_回答」を新規に追加し、
 そのA列にブック名
 B列にそのブックの全シート名の一覧を入れて下さい。

・繰り返し実行できるように、
 シート「練習17_回答」が既に存在した場合は、
 一旦削除してから、シート追加して下さい。

 A     B
パス ブック名
C:\User Book1.xls
C:\User サンプル.xls
C:\User test.xls
   
   

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

以下が完成イメージです。
Excelサンプル画像

では、お考えください。

すぐに回答を見ずに、必ず自力で書けるとこまででも良いので書きましょう。


・・
・・・
・・・・
・・・・・

当サイトのコンテンツ

ExcelマクロVBA入門
マクロの記録で覚えるVBA

ここで、じっくり勉強して下さい。



・・
・・・
・・・・
・・・・・




では、回答です。

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オブジェクト

ExcelマクロVBA入門.第58回.コレクションとは

ExcelマクロVBA入門.第59回.コレクション処理(For Each)

ExcelマクロVBA入門.第65回.シートの追加、名前の変更(Add,Name)

ExcelマクロVBA入門.第66回.シートのコピー・移動・削除(Copy,Move,Delete)





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

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

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

クラスとCallByNameとポリモーフィズム(多態性)|VBA技術解説(4月6日)
VBAでのタイマー処理(SetTimer,OnTime)|VBA技術解説(4月3日)
クラスとイベントとマルチプロセス並列処理|VBA技術解説(4月2日)
エクセルの日付と時刻のまとめ|エクセル関数超技(3月6日)
Excelシートの複雑な計算式を解析するVBA|VBAサンプル集(2月18日)
VBAクラスの作り方:独自Rangeっぽいものを作ってみた|VBA技術解説(2月16日)
VBAクラスの作り方:列名のプロパティを自動作成する|VBA技術解説(2月14日)
VBAクラスの作り方:列名の入力支援と列移動対応|VBA技術解説(2月11日)
クラスを使って他ブックのイベントを補足する|VBA技術解説(2月6日)
Excelアドインの作成と登録について|VBA技術解説(2月3日)

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

1.ひらがな⇔カタカナの変換|エクセル基本操作
2.最終行の取得(End,Rows.Count)|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.RangeとCellsの使い方|ExcelマクロVBA入門
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.繰り返し処理(For Next)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門



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

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


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。






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

    本文下部へ