Vba 创建包含文件夹中所有文件列表的文本文件
我想在同一个文件夹中创建一个.txt文件,以登记所有文件并恢复文件的所有内容(txt文件) 我试着用下一个代码来编程这个动作,但没有成功 作为目录字符串的输入变量必须从对话框中获取 有什么改进的办法吗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(
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批处理代码来获取文本文件中的文件名。它只有两行代码。你需要吗?