Vba 创建包含文件夹中所有文件列表的文本文件

Vba 创建包含文件夹中所有文件列表的文本文件,vba,text,filesystems,file-listing,Vba,Text,Filesystems,File Listing,我想在同一个文件夹中创建一个.txt文件,以登记所有文件并恢复文件的所有内容(txt文件) 我试着用下一个代码来编程这个动作,但没有成功 作为目录字符串的输入变量必须从对话框中获取 有什么改进的办法吗 Dim Dir1 As String Dir1 = InputBox("Input the location of the files") Order1 = "type *.b*>>mat.txt" Order2 = "dir/b>lista.txt" Call Shell(

我想在同一个文件夹中创建一个.txt文件,以登记所有文件并恢复文件的所有内容(txt文件)

我试着用下一个代码来编程这个动作,但没有成功

作为目录字符串的输入变量必须从对话框中获取

有什么改进的办法吗

Dim Dir1 As String

Dir1 = InputBox("Input the location of the files")
Order1 = "type *.b*>>mat.txt"
Order2 = "dir/b>lista.txt"

Call Shell("cmd.exe /S /K" & Order1, vbNormalFocus)
Call Shell("cmd.exe /S /K" & Order2, vbNormalFocus)

End Sub

使用以下子项:它将为您提供所选文件夹中所有文件的列表。选择excel中的任意单元格。触发子文件夹。它将提示选择文件夹。选择任意文件夹。获取该文件夹的所有文件的列表

    Sub AllFiles()
        Dim xRow As Long
        Dim xDirect$, xFname$, InitialFoldr$
        InitialFoldr$ = "C:\" '<<< Startup folder to begin searching from

        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = Application.DefaultFilePath & "\"
            .Title = "Please select a folder to list Files from"
            .InitialFileName = InitialFoldr$
            .Show
                If .SelectedItems.Count <> 0 Then
                  xDirect$ = .SelectedItems(1) & "\"
                   xFname$ = Dir(xDirect$, 7)

                    Do While xFname$ <> ""
                      ActiveCell.Offset(xRow) = xFname$
                       xRow = xRow + 1
                      xFname$ = Dir
                    Loop
                End If
        End With
End Sub
Sub-AllFiles()
长得一样
Dim xDirect$、xFname$、InitialFoldr$

InitialFoldr$=“C:\”使用以下子项:它将为您提供所选文件夹中所有文件的列表。选择excel中的任意单元格。触发子文件夹。它将提示选择文件夹。选择任意文件夹。获取该文件夹的所有文件的列表

    Sub AllFiles()
        Dim xRow As Long
        Dim xDirect$, xFname$, InitialFoldr$
        InitialFoldr$ = "C:\" '<<< Startup folder to begin searching from

        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = Application.DefaultFilePath & "\"
            .Title = "Please select a folder to list Files from"
            .InitialFileName = InitialFoldr$
            .Show
                If .SelectedItems.Count <> 0 Then
                  xDirect$ = .SelectedItems(1) & "\"
                   xFname$ = Dir(xDirect$, 7)

                    Do While xFname$ <> ""
                      ActiveCell.Offset(xRow) = xFname$
                       xRow = xRow + 1
                      xFname$ = Dir
                    Loop
                End If
        End With
End Sub
Sub-AllFiles()
长得一样
Dim xDirect$、xFname$、InitialFoldr$

InitialFoldr$=“C:\”使用
Dir
方法:

Sub Dir_Use()
Dim i As Long
Dim FileList()
Dim FSO As Object
Dim oFile As Object
Dim strPath As String

strPath = "c:\test"
Set FSO = CreateObject("Scripting.FileSystemObject")
FileList = Read_FilesNames_From_Folder(strPath)
Set oFile = FSO.CreateTextFile(strPath)

For i = LBound(FileList) To UBound(FileList)
    oFile.WriteLine FileList(i)
Next i

oFile.Save
oFile.Close

Set FSO = Nothing
Set oFile = Nothing

End Sub

Function Read_FilesNames_From_Folder(InitilFolderPath As String) As Variant

With Application
    .EnableEvents = False
    .DisplayAlerts = False
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

Dim FileName As String, _
    FolderPath As String, _
    Results()
ReDim Results(0)

With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = InitilFolderPath
    If .Show = True Then
        FolderPath = .SelectedItems(1)
    Else
        Exit Function
    End If
End With

FileName = Dir(FolderPath & "*.xlsx")

Do While FileName <> ""
    Results(UBound(Results)) = FileName
    ReDim Preserve Results(UBound(Results) + 1)
    FileName = Dir
Loop
ReDim Preserve Results(UBound(Results) - 1)

With Application
    .EnableEvents = True
    .DisplayAlerts = True
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With

Read_FilesNames_From_Folder = Results
End Function

使用
Dir
方法:

Sub Dir_Use()
Dim i As Long
Dim FileList()
Dim FSO As Object
Dim oFile As Object
Dim strPath As String

strPath = "c:\test"
Set FSO = CreateObject("Scripting.FileSystemObject")
FileList = Read_FilesNames_From_Folder(strPath)
Set oFile = FSO.CreateTextFile(strPath)

For i = LBound(FileList) To UBound(FileList)
    oFile.WriteLine FileList(i)
Next i

oFile.Save
oFile.Close

Set FSO = Nothing
Set oFile = Nothing

End Sub

Function Read_FilesNames_From_Folder(InitilFolderPath As String) As Variant

With Application
    .EnableEvents = False
    .DisplayAlerts = False
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

Dim FileName As String, _
    FolderPath As String, _
    Results()
ReDim Results(0)

With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = InitilFolderPath
    If .Show = True Then
        FolderPath = .SelectedItems(1)
    Else
        Exit Function
    End If
End With

FileName = Dir(FolderPath & "*.xlsx")

Do While FileName <> ""
    Results(UBound(Results)) = FileName
    ReDim Preserve Results(UBound(Results) + 1)
    FileName = Dir
Loop
ReDim Preserve Results(UBound(Results) - 1)

With Application
    .EnableEvents = True
    .DisplayAlerts = True
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With

Read_FilesNames_From_Folder = Results
End Function

听起来像是家庭作业。。。搜索槽所以或使用谷歌,有很多例子,如果你把你的任务分成子任务(循环槽文件目录,创建txt文件目录,读取txt文件的内容等)听起来像家庭作业。。。搜索槽所以或使用谷歌,有很多例子,如果你把你的任务分为子任务(循环槽文件目录,创建txt文件目录,阅读txt文件的内容等)非常感谢你,它已经正常工作!非常有帮助@马可斯布斯托:很高兴我能帮上忙,但请花一分钟的时间来参观,看看你如何接受答案并对帖子进行投票:非常感谢,它工作正常!非常有帮助@MarcosBusto:很高兴我能帮上忙,但是请花一点时间参观一下,看看你如何接受答案并对帖子进行投票:太好了,我只需要为MS-DOS命令实现另一个功能“type..”,但我会像你一样操作,非常聪明,非常感谢!我还有ms批处理代码来获取文本文件中的文件名。它只有两行代码。你需要吗?很好,我只需要为MS-DOS命令实现另一个函数“type..”,但我将以与你相同的方式操作,非常聪明,非常感谢!我还有ms批处理代码来获取文本文件中的文件名。它只有两行代码。你需要吗?