搜索字符串/单词,文件名并使用fso提取到新表中

用户名

我以前曾问过一个与我要发布的新问题相关的问题,并且在同伴的帮助下,所以它的作用是循环遍历一个文件夹并将指定范围提取到一个新创建的excel工作表中。但是我仍然面临2个问题,

1)如何获取所有文件名,例如文件夹中的6个文件,并将其写入具有相同格式的复制范围旁边的新创建的工作表中?标头= E1,文件名从E2开始。

2)有没有一种方法可以搜索文件夹中所有文件中的字符串/单词,然后再次执行相同的操作,从而将它们也以相同的格式提取到新创建的工作表中

这是代码

Option Explicit

Sub ScanFiles()

    Application.ScreenUpdating = False

    Dim wkb As Workbook
    Set wkb = ThisWorkbook

    Dim wks As Worksheet
    Set wks = Worksheets.Add
    wks.Name = "NewWorksheet"

    ' Add Worksheet to accept data
    With wks
        '.Range("A2:I20").ClearContents -> No longer needed as you create a new sheet
        .Range("A1:D1") = Array("Test", "Temp", "Start", "Type")
    End With

    ' Set your copy ranges
    Dim CopyRange(1 To 4) As String
    CopyRange(1) = "A18"
    CopyRange(2) = "A19"
    CopyRange(3) = "A14"
    CopyRange(4) = "A19"

    ' Early Binding - Add "Microsoft Scripting Runtime" Reference
    Dim FSO As New Scripting.FileSystemObject

    ' Set FolderPath
    Dim FolderPath As String
    FolderPath = "c:\Users\Desktop\Tryout\"

    ' Set Folder FSO
    Dim Folder As Scripting.Folder
    Set Folder = FSO.GetFolder(FolderPath)

    ' Loop thru each file -> Assuming only 6 files 
    Dim File As Scripting.File
    For Each File In Folder.Files

        Dim wkbData As Workbook
        Set wkbData = Workbooks.Open(File.path)

        Dim wksData As Worksheet
        Set wksData = wkbData.Worksheets("Sheet1") ' -> Assume this file has only 1 worksheet

        Dim BlankRow As Long
        BlankRow = wks.Range("A" & wks.Rows.Count).End(xlUp).Row + 1

        Dim i As Long
        For i = 1 To 4
            wks.Cells(BlankRow, i).Value = wksData.Range(CopyRange(i)).Value
        Next i

        wkbData.Close False

    Next File

    Range("A:I").EntireColumn.AutoFit
    Application.ScreenUpdating = True

End Sub

感谢任何帮助!如果能够提供一小部分代码,那就更好了!

alowflying猪

1)FSO具有一些很棒的功能。其中之一是.Name在这条线之后:

For Each File In Folder.Files

写:

Debug.Print File.Name

在立即的窗口中,您将看到文件的名称。然后,您可以通过简单的引用将结果复制到工作表中,如下所示:

wks.Range("E1").Value = File.Name

标头只是将这一行修改为:

.Range("A1:D1") = Array("Test", "Temp", "Start", "Type")

2)要搜索最快最简单的单词,就是使用like函数。同样,您将使用与以前相同的方法,但使用一条If语句。

If File.Name Like "*SomeString*" Then
    wksFSO.Cells(1, 1) = File.Name
End If

请注意在*sear字符串之前和之后使用通配符随意修改它。很明显,我的结果指向单个单元格。如果期望很多,则可以更新它以在期望更多结果的情况下写入新行。要将它们提取到新的文件中,Worksheet我先设置Worksheet和复制名称。像这样:

Worksheets.Add

现在将所有内容包装到相同的代码中,可以这样编写:

Option Explicit

Sub ScanFiles()

    Application.ScreenUpdating = False

    Dim wks As Worksheet
    Set wks = Worksheets.Add
    wks.Name = "NewWorksheet"

    ' New worksheet for question 2
    Dim wksFSO As Worksheet
    Set wksFSO = Worksheets.Add
    wksFSO.Name = "FSOWorksheet"

    ' Add headers data
    With wks
        .Range("A1:E1") = Array("Test", "Temp", "Start", "Type", "FileName")
    End With

    ' Set your copy ranges
    Dim CopyRange(1 To 4) As String
    CopyRange(1) = "A18"
    CopyRange(2) = "A19"
    CopyRange(3) = "A14"
    CopyRange(4) = "A19"

    ' Early Binding - Add "Microsoft Scripting Runtime" Reference
    Dim FSO As New Scripting.FileSystemObject

    ' Set FolderPath
    Dim FolderPath As String
    FolderPath = "c:\Users\Desktop\Tryout\"

    ' Set Folder FSO
    Dim Folder As Scripting.Folder
    Set Folder = FSO.GetFolder(FolderPath)

    ' Loop thru each file -> Assuming only 6 files
    Dim File As Scripting.File
    For Each File In Folder.Files

        ' If loop looking for specific files and copy to new FSOWorksheet
        If File.Name Like "*SomeString*" Then
            wksFSO.Cells(1, 1) = File.Name
        End If

        Dim wkbData As Workbook
        Set wkbData = Workbooks.Open(File.Path)

        Dim wksData As Worksheet
        Set wksData = wkbData.Worksheets("Sheet1") ' -> Assume this file has only 1 worksheet

        Dim BlankRow As Long
        BlankRow = wks.Range("A" & wks.Rows.Count).End(xlUp).row + 1

        Dim i As Long
        For i = 1 To 4
            wks.Cells(BlankRow, i).Value = wksData.Range(CopyRange(i)).Value
        Next i

        ' Write filename in col E
        wks.Cells(BlankRow, 5).Value = File.Name

        wkbData.Close False

    Next File

    Range("A:I").EntireColumn.AutoFit
    Application.ScreenUpdating = True

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用PowerShell在文件名中搜索字符串

来自分类Dev

使用内置的Windows搜索在文件名中搜索子字符串

来自分类Dev

使用Python zipfile从ZIP中提取文件名中包含特定字符串的文件

来自分类Dev

检测字符串变量中的单词列表,并将匹配的单词提取到数据帧中的新变量中

来自分类Dev

Python,在Excel工作表中搜索列中的特定字符串,然后将这些行提取到文本文件中

来自分类Dev

Python,在Excel工作表中搜索列中的特定字符串,然后将这些行提取到文本文件中

来自分类Dev

在大字符串中搜索文件路径。返回文件路径+文件名

来自分类Dev

在大字符串中搜索文件路径。返回文件路径+文件名

来自分类Dev

在Bash中搜索包含特定字符串的特定扩展名文件名

来自分类Dev

从文件名中提取特定的子字符串

来自分类Dev

如何从文件名中提取字符串?

来自分类Dev

从路径字符串中提取文件名

来自分类Dev

使用从文件名中提取的字符串重命名文件

来自分类Dev

使用批处理文件从字符串(文件名)中提取特定部分

来自分类Dev

搜索包含字符串的文件名

来自分类Dev

搜索包含文件名的字符串

来自分类Dev

搜索没有特定字符串的文件名

来自分类Dev

如果匹配特定符号,如何将数据框中的字符串搜索并提取到新列中?

来自分类Dev

在Powershell中从字符串搜索中提取整个单词

来自分类Dev

从Python中的文件名中提取子字符串?

来自分类Dev

我可以提取在JavaScript中的PDF文件名格式的字符串?

来自分类Dev

从包含<img>标记的字符串中仅提取文件名

来自分类Dev

从批处理脚本中的文件名中提取和替换字符串

来自分类Dev

使用VBA从文件名中提取长度可变的字符串

来自分类Dev

在目录中搜索字符串-获取不带文件名的输出

来自分类Dev

PYTHON REGEX 从字符串中搜索所有 .sql 文件名

来自分类Dev

使用pdfgrep在pdf内搜索字符串,仅输出文件名

来自分类Dev

Windows 资源管理器使用子字符串搜索文件名

来自分类Dev

在特定扩展名的文件中搜索字符串后提取文件夹名称

Related 相关文章

  1. 1

    使用PowerShell在文件名中搜索字符串

  2. 2

    使用内置的Windows搜索在文件名中搜索子字符串

  3. 3

    使用Python zipfile从ZIP中提取文件名中包含特定字符串的文件

  4. 4

    检测字符串变量中的单词列表,并将匹配的单词提取到数据帧中的新变量中

  5. 5

    Python,在Excel工作表中搜索列中的特定字符串,然后将这些行提取到文本文件中

  6. 6

    Python,在Excel工作表中搜索列中的特定字符串,然后将这些行提取到文本文件中

  7. 7

    在大字符串中搜索文件路径。返回文件路径+文件名

  8. 8

    在大字符串中搜索文件路径。返回文件路径+文件名

  9. 9

    在Bash中搜索包含特定字符串的特定扩展名文件名

  10. 10

    从文件名中提取特定的子字符串

  11. 11

    如何从文件名中提取字符串?

  12. 12

    从路径字符串中提取文件名

  13. 13

    使用从文件名中提取的字符串重命名文件

  14. 14

    使用批处理文件从字符串(文件名)中提取特定部分

  15. 15

    搜索包含字符串的文件名

  16. 16

    搜索包含文件名的字符串

  17. 17

    搜索没有特定字符串的文件名

  18. 18

    如果匹配特定符号,如何将数据框中的字符串搜索并提取到新列中?

  19. 19

    在Powershell中从字符串搜索中提取整个单词

  20. 20

    从Python中的文件名中提取子字符串?

  21. 21

    我可以提取在JavaScript中的PDF文件名格式的字符串?

  22. 22

    从包含<img>标记的字符串中仅提取文件名

  23. 23

    从批处理脚本中的文件名中提取和替换字符串

  24. 24

    使用VBA从文件名中提取长度可变的字符串

  25. 25

    在目录中搜索字符串-获取不带文件名的输出

  26. 26

    PYTHON REGEX 从字符串中搜索所有 .sql 文件名

  27. 27

    使用pdfgrep在pdf内搜索字符串,仅输出文件名

  28. 28

    Windows 资源管理器使用子字符串搜索文件名

  29. 29

    在特定扩展名的文件中搜索字符串后提取文件夹名称

热门标签

归档