Excel VBAで全シート名をCSVに出力&クリップボードにコピーするマクロ
こんにちは。スーパーソフトウエア東京オフィス 技術部の加藤です。
ソフトウェア開発の現場では、設計やテストに関わるさまざまな成果物をドキュメント化する必要があります。基本設計書はWordで、シーケンス図はAstahやPlantUMLで、といった具合に用途ごとにツールを使い分ける場面が多々ありますが、特にExcelは、その柔軟性と普及率の高さから、使われる頻度の高いツールの一つだと思います。
たとえば、以下のような用途でExcelを活用する機会がよくあります:
テストケースの一覧管理
詳細設計書の項目ごとのまとめ
クラス仕様や設定情報の表形式での記述
リリースやレビューのチェックリスト
こうしたドキュメントでは、共通フォーマットのシートを複数作成し、1ブック内で管理するという運用が一般的です。しかしその一方で、以下のような問題が起こりやすいという現場の声もよく聞きます:
現場でのExcel運用にありがちな課題
シート名の命名ルールが統一されていない
シートの並び順に規則性がなく、把握しづらい
必要な情報の抜け漏れが後から判明する
全体構造を俯瞰する手段が用意されていない
これらの問題は、一見すると些細に思えるかもしれませんが、設計レビューやドキュメントチェックのフェーズで思わぬ手戻りや品質リスクを招くことがあります。特に大規模なプロジェクトでは、こうした「ちょっと面倒な作業」の積み重ねがボトルネックになりがちです。
そこでVBAマクロの出番です
今回は、Excelファイル内のすべてのシート名を一覧で取得し、
CSVファイルに保存する
同時にその一覧をクリップボードにコピーする
という2つの作業を一発で自動化するVBAマクロをご紹介します。
この機能は以下のような場面で便利です:
設計資料にシート一覧を明示したいとき
管理表やレビューチェックリストに貼り付けたいとき
シート数が多すぎて手作業で管理するのが面倒なとき
通常のExcel関数では難しい理由
Excelには =CELL("filename",A1) のような関数もありますが、これは現在アクティブなシートの情報しか取得できないため、他のシート名を一括取得するには不向きです。
また、GET.WORKBOOK(1) を使ったシート名一覧の取得テクニックもありますが、こちらは名前定義やマクロの併用が前提であり、初心者にはやや敷居が高い手法です。
つまり、純粋に関数だけで「全シート名の一覧を取得する」ことは難しいというのが現実です。
VBAマクロのソースコード
以下が今回ご紹介するVBAマクロです。
Sub ExportSheetNamesToCSV()
Dim i As Integer
Dim filePath As String
Dim sheetList As String
Dim DataObj As New MSForms.DataObject
' list.csv の出力先:現在のブックと同じフォルダ
filePath = ThisWorkbook.Path & "\list.csv"
' シート名を1つずつ取得して文字列に追加
For i = 1 To ThisWorkbook.Sheets.Count
sheetList = sheetList & ThisWorkbook.Sheets(i).Name & vbCrLf
Next i
' CSVファイルに書き出す
Open filePath For Output As #1
Print #1, sheetList
Close #1
' クリップボードにコピー
DataObj.SetText sheetList
DataObj.PutInClipboard
End Sub使用手順と補足
このマクロでは、最初は確認用としてシート名一覧を list.csv としてCSVファイルに出力していますが、もし不要であれば、ファイル出力部分は削除しても問題ありません。シート名一覧がクリップボードにコピーされるため、そのままExcelやWordなどに貼り付けて使うことができ、操作の自由度が高い点が開発現場では非常に便利です。
特に、限られた時間の中で迅速に資料を整える必要がある場面では、コピー&ペーストで即対応できるのは大きなメリットです。
使い方
ExcelでAlt + F11 を押してVBAエディタを開く
任意のモジュールを挿入して上記コードを貼り付ける
マクロを実行(F5キー or メニューから)
ブックと同じフォルダに「list.csv」が作成され、同時にクリップボードにも一覧がコピーされます
※「Microsoft Forms 2.0 Object Library」を参照設定するか、CreateObject("MSForms.DataObject") で動作させるようにします。
まとめ
Excelは便利なツールですが、シートが増えてくると意外と「管理が面倒」「一括処理ができない」という問題に直面します。特に設計ドキュメントとしてExcelを使う現場では、ちょっとした作業の自動化が、作業効率と成果物の品質に大きく貢献します。
今回のVBAマクロは、その第一歩として非常にシンプルながら実用性の高いツールです。プロジェクトのテンプレートや、チーム共通のツールキットに加えておくと、いざという時に役立つはずです。
▼採用情報
▼新卒情報はWantedlyで
