Excelブックの情報取得
現在アクティブになっているExcelブックのパス・ブック名の取得方法をご紹介します。
Dim BookPath As String
Dim BookName As String
BookPath = ActiveWorkbook.Path 'パスの取得
BookName = ActiveWorkbook.Name 'ブック名の取得
Dim BookName As String
BookPath = ActiveWorkbook.Path 'パスの取得
BookName = ActiveWorkbook.Name 'ブック名の取得
現在オープンしているExcelブックのパス・ブック名の取得方法をご紹介します。
Workbooks.Count は 現在オープンしているExcel数を取得します。
'■ 変数定義・・数が未定なため動的配列とする
Dim AllBookPath() As String
Dim AllBookName() As String
Dim i As Integer
'配列の要素数を定義
ReDim AllBookPath(Workbooks.Count)
ReDim AllBookName(Workbooks.Count)
For i = 1 To Workbooks.Count
AllBookPath(i - 1) = Workbooks(i).Path 'パスの取得
AllBookName(i - 1) = Workbooks(i).Name 'ブック名の取得
Next i
Dim AllBookPath() As String
Dim AllBookName() As String
Dim i As Integer
'配列の要素数を定義
ReDim AllBookPath(Workbooks.Count)
ReDim AllBookName(Workbooks.Count)
For i = 1 To Workbooks.Count
AllBookPath(i - 1) = Workbooks(i).Path 'パスの取得
AllBookName(i - 1) = Workbooks(i).Name 'ブック名の取得
Next i
Excelワークシートの情報取得
現在アクティブになっているExcelワークシート名の取得方法をご紹介します。
'■ 変数定義
Dim WorkSheetName As String
WorkSheetName = ActiveWorkbook.ActiveSheet.Name 'ワークシート名の取得
Dim WorkSheetName As String
WorkSheetName = ActiveWorkbook.ActiveSheet.Name 'ワークシート名の取得
1ブック中の全Excelワークシート名の取得方法をご紹介します。
Worksheets.Count は 1ブック中のワークシート数を取得します。
'■ 変数定義・・数が未定なため動的配列とする
Dim AllWorksheetName() As String
Dim i As Integer
'配列の要素数を定義
ReDim AllWorksheetName(Worksheets.Count)
For i = 1 To Worksheets.Count
AllWorksheetName(i - 1) = Worksheets(i).Name 'ワークシート名の取得
Next i
Dim AllWorksheetName() As String
Dim i As Integer
'配列の要素数を定義
ReDim AllWorksheetName(Worksheets.Count)
For i = 1 To Worksheets.Count
AllWorksheetName(i - 1) = Worksheets(i).Name 'ワークシート名の取得
Next i
Excelブック・ワークシートの情報を取得し一元管理する
変数はグローバル変数として下記のように構造体を作成すると良いと思います。
'Excel情報の構造体
Type ExcelData
BookPath As String 'ブックのパス
BookName As String 'ブック名
WorksheetCnt As Integer 'ワークシートの件数
WorksheetName() As String 'ワークシート名
End Type
Global ExcelInfo() As ExcelData 'Excel情報の配列
Global ExcelInfoCnt As Integer '件数
Type ExcelData
BookPath As String 'ブックのパス
BookName As String 'ブック名
WorksheetCnt As Integer 'ワークシートの件数
WorksheetName() As String 'ワークシート名
End Type
Global ExcelInfo() As ExcelData 'Excel情報の配列
Global ExcelInfoCnt As Integer '件数
下記のように関数化して GetExcelInfo を call してはいかがでしょうか。
'Excelブック・ワークシートの情報を取得
Sub GetExcelInfo()
'カウンター
Dim i As Integer
Dim j As Integer
'構造体の初期化
Erase ExcelInfo
'オープンしているブック数を取得
ExcelInfoCnt = Workbooks.Count
'構造体の配列を動的にブック数に変更する
ReDim ExcelInfo(Workbooks.Count)
'ブック数分 ループする
For i = 1 To ExcelInfoCnt
'ブックのパス・ブック名を取得する
ExcelInfo(i - 1).BookPath = Workbooks(i).Path
ExcelInfo(i - 1).BookName = Workbooks(i).Name
Next i
'ブック数分 ループする
For i = 1 To ExcelInfoCnt
'該当のブックをアクティブにする
Workbooks(ExcelInfo(i - 1).BookName).Activate
'ワークシート数を取得する
ExcelInfo(i - 1).WorksheetCnt = Worksheets.Count
'構造体のワークシートの変数配列を動的にワークシート数に変更する
ReDim ExcelInfo(i - 1).WorksheetName(ExcelInfo(i - 1).WorksheetCnt)
'ワークシート数分 ループする
For j = 1 To ExcelInfo(i - 1).WorksheetCnt
'ワークシート名を取得する
ExcelInfo(i - 1).WorksheetName(j - 1) = Worksheets(j).Name
Next j
Next i
End Sub
Sub GetExcelInfo()
'カウンター
Dim i As Integer
Dim j As Integer
'構造体の初期化
Erase ExcelInfo
'オープンしているブック数を取得
ExcelInfoCnt = Workbooks.Count
'構造体の配列を動的にブック数に変更する
ReDim ExcelInfo(Workbooks.Count)
'ブック数分 ループする
For i = 1 To ExcelInfoCnt
'ブックのパス・ブック名を取得する
ExcelInfo(i - 1).BookPath = Workbooks(i).Path
ExcelInfo(i - 1).BookName = Workbooks(i).Name
Next i
'ブック数分 ループする
For i = 1 To ExcelInfoCnt
'該当のブックをアクティブにする
Workbooks(ExcelInfo(i - 1).BookName).Activate
'ワークシート数を取得する
ExcelInfo(i - 1).WorksheetCnt = Worksheets.Count
'構造体のワークシートの変数配列を動的にワークシート数に変更する
ReDim ExcelInfo(i - 1).WorksheetName(ExcelInfo(i - 1).WorksheetCnt)
'ワークシート数分 ループする
For j = 1 To ExcelInfo(i - 1).WorksheetCnt
'ワークシート名を取得する
ExcelInfo(i - 1).WorksheetName(j - 1) = Worksheets(j).Name
Next j
Next i
End Sub