私はInput Directoryを取得し、.xlsxレポートの数とそのレポート内のワークシートの総数を計算するテキストボックスを持っています。ディレクトリ内のすべての.xlsxワークブックのワークシート名を取得
これらのレポートのそれぞれのレポート名とシート名を取得したいと思います。
これを取得する最も簡単な方法は何でしょうか。
100個のワークブックとその中に合計1000個のワークシートが存在する場合があるため、
ここで私のコードは、レポートやワークシートの数を取得します。
Private Sub FL_TextBox_Change()
Dim FolderPath As String
Dim path As String
Dim count As Integer
Dim Wk As Workbook
Dim Ws As Workbook
Set Ws = ActiveWorkbook
FolderPath = NewTask.FL_TextBox.Value
MsgBox ("Click Ok & Wait for the Total Number of Reports and Worksheets" & vbNewLine & vbNewLine & "to be calculated.")
If FolderPath = "" Then
NewTask.Num_Rpt_TextBox.Value = ""
Ws.Sheets("Config").Range("I1").Value = ""
Else
path = FolderPath & "\*.xlsx"
Filename = Dir(path)
File = (FolderPath & "\" & Filename)
wkcount = 0
Shcount = 0
shtcount = 0
RptSheets = ""
Do While Filename <> ""
wkcount = wkcount + 1
File = FolderPath & "\" & Filename
Set Wk = Workbooks.Open(File, ReadOnly:=True)
Shcount = Wk.Sheets.count
If RptSheets <> "" Then
RptSheets = RptSheets & "," & Shcount
Else
RptSheets = Shcount
End If
Wk.Close
shtcount = shtcount + Shcount
Filename = Dir()
Loop
Ws.Sheets("Config").Range("I1").Value = RptSheets
XlsxFilesPresent = wkcount & "/" & shtcount
NewTask.Num_Rpt_TextBox.Value = XlsxFilesPresent
End If
End Sub
だから、短期で - 私は構造化された方法でそれらのレポート内のワークシートやワークシート名の.xlsx形式のレポートの数とそれらのレポート名と番号を取得したいです。
など
Number of workbooks = 3
Number of Worksheets = 100
ReportNames = TestFile1, TestFile2, TestFile3.
SheetNames = TestFile1:TestSheet1, TestFile1:TestSheet2, TestFile1:TestSheet3, TestFile1:TestSheet4
ような何か、
親切に速く実行されているこのプロセスを得ることにあなたの考えを共有しています。
可能な複製(https://stackoverflow.com/questions/26262962/excel- vba-efficient-get-file-names-function) – Ralph
@Ralphシート名も必要です。私はその質問を見て、私は思う - 私の要件はそれに似ていますが、まったく同じではありません。 – Sid29
ADO OpenSchemaメソッドを使用して、ワークシート名を取得できます。 –