통합 문서의 시트 이름을 가져와 목록을 만드는 엑셀 VBA
다음 샘플 코드를 사용하면,
라는 작업을 자동화합니다.
조작방법
1,
아래의 샘플 코드를 포함한 엑셀 파일을 열고 →「개발」→「매크로」의 순서로 클릭.
「A 시트명 취득」→「실행」의 순서로 클릭.

2,
파일 열기 대화 상자가 표시되므로 시트 이름을 가져오려는 대상 엑셀 북을 클릭하고 열기를 클릭합니다.

3,
매크로가 실행됩니다.
「시트명 일람」을 추가, 전체 시트명을 취득해,
시트 이름 목록에 시트 이름 목록을 만듭니다.

완료입니다.
샘플 코드
Sub Aファイルを開く()
Dim OpenFileName As String
OpenFileName = Application.GetOpenFilename("Excelファイル,*.xls*")
If OpenFileName = "False" Then
MsgBox "キャンセルされました。処理を終了します。"
End
Else
Workbooks.Open OpenFileName
End If
End Sub
Sub Aシート名取得()
Dim sh As Variant, flag As Boolean
Dim ws As Worksheet
Dim i As Long
i = 0
Call Aファイルを開く
'画面更新停止
Application.ScreenUpdating = False
'確認ダイアログ停止
Application.DisplayAlerts = False
For Each sh In Sheets
If sh.Name = "シート名一覧" Then
flag = True
Exit For
End If
Next sh
If flag = True Then
Dim rc As Integer
'メッセージ表示
rc = MsgBox("シート「シート名一覧」を上書きしますか?" & Chr(13) & "※この処理は戻せません", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then
'画面更新停止
Application.ScreenUpdating = False
'シート選択
Worksheets("シート名一覧").Activate
'シート削除
ActiveSheet.Delete
'画面更新停止
Application.ScreenUpdating = True
'メッセージ表示
MsgBox "処理前のシート「シート名一覧」は削除済みです"
'シート追加
Worksheets.Add before:=Worksheets(1)
'シート名変更
ActiveSheet.Name = "シート名一覧"
'シート選択
Worksheets("シート名一覧").Activate
Worksheets("シート名一覧").Activate
Worksheets("シート名一覧").Range("A1").Value = "シート名(現在)"
Worksheets("シート名一覧").Range("B1").Value = "シート名(変更後)"
For Each ws In Worksheets
Cells(Selection.row + i, Selection.Column).NumberFormatLocal = "@"
Cells(Selection.row + i, Selection.Column) = ws.Name
i = i + 1
Next
ActiveSheet.Name = "シート名一覧"
Columns("A:B").Select
Columns("A:B").EntireColumn.AutoFit
Selection.NumberFormatLocal = "@"
Else
'メッセージ表示
MsgBox "キャンセルされました。処理を終了します。"
End If
Else
'シート追加
Worksheets.Add before:=Worksheets(1)
'シート名変更
ActiveSheet.Name = "シート名一覧"
'シート選択
Worksheets("シート名一覧").Activate
Worksheets("シート名一覧").Activate
Worksheets("シート名一覧").Range("A1").Value = "シート名(現在)"
Worksheets("シート名一覧").Range("B1").Value = "シート名(変更後)"
For Each ws In Worksheets
Cells(Selection.row + i, Selection.Column).NumberFormatLocal = "@"
Cells(Selection.row + i, Selection.Column) = ws.Name
i = i + 1
Next
ActiveSheet.Name = "シート名一覧"
Columns("A:B").Select
Columns("A:B").EntireColumn.AutoFit
Selection.NumberFormatLocal = "@"
End If
End Sub
코드의 특징
취소 처리되는 것에 대응하고 있습니다.
"책의 시트 이름을 일괄 대체하는 엑셀 VBA" 와 연동 가능하도록 하고 있습니다.
Reference
이 문제에 관하여(통합 문서의 시트 이름을 가져와 목록을 만드는 엑셀 VBA), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/skillhunter007/items/d260de97d6ce24ad935e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)