簡體   English   中英

Excel VBA宏在.doc文件中查找文本

[英]Excel VBA macro find Text in .doc files

我想編寫一個宏,可以在大約100個文件夾中找到名稱為XXXX_TestSummary的文件,並在這些文件中搜索單詞“Failed”。 宏應該返回包含文本或excel失敗單詞的文件名。

我被卡住了,因為我可以在文件夾中找到文件名。 下面是代碼

Sub MainList()

    'Updateby20150706
    Set folder = Application.FileDialog(msoFileDialogFolderPicker)
    If folder.Show <> -1 Then Exit Sub
    xDir = folder.SelectedItems(1)
    Call ListFilesInFolder(xDir, True)

End Sub

Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)

    Dim xFileSystemObject As Object
    Dim xFolder As Object
    Dim xSubFolder As Object
    Dim xFile As Object
    Dim rowIndex As Long
    Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
    Set xFolder = xFileSystemObject.GetFolder(xFolderName)
    rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
    For Each xFile In xFolder.Files
      Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
      rowIndex = rowIndex + 1
    Next xFile
    If xIsSubfolders Then
      For Each xSubFolder In xFolder.SubFolders
        ListFilesInFolder xSubFolder.path, True
      Next xSubFolder
    End If
    Set xFile = Nothing
    Set xFolder = Nothing
    Set xFileSystemObject = Nothing

End Sub

Function GetFileOwner(ByVal xPath As String, ByVal xName As String)

    Dim xFolder As Object
    Dim xFolderItem As Object
    Dim xShell As Object
    xName = StrConv(xName, vbUnicode)
    xPath = StrConv(xPath, vbUnicode)
    Set xShell = CreateObject("Shell.Application")
    Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
    If Not xFolder Is Nothing Then
      Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
    End If
    If Not xFolderItem Is Nothing Then
      GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
    Else
      GetFileOwner = ""
    End If
    Set xShell = Nothing
    Set xFolder = Nothing
    Set xFolderItem = Nothing

End Function

可以請任何人幫忙解決這個問題嗎?

如果您使用上面的代碼,則需要在循環中添加一些代碼:

For Each xFile In xFolder.Files
    Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
    (ADD CODE HERE)
    rowIndex = rowIndex + 1
Next xFile

或者,您可以在該循環的頂部添加一個if語句,以檢查xFile.Name包含“失敗”:

For Each xFile In xFolder.Files
    If InStr(xFile.Name, "Failed") Then
        Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Name
        rowIndex = rowIndex + 1
    End If
Next xFile

這樣,您只會在其名稱文本中列出包含“失敗”的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM