2016-12-30 24 views
1

約100個のフォルダにXXXX_TestSummaryという名前のファイルを検索し、それらのファイルで "Failed"という単語を検索するマクロを作成したいとします。マクロは、wordが失敗したファイル名をテキストで返します。Excel VBAマクロfind .docファイル内のテキスト

私はちょうどフォルダのファイル名を見つけることができますように私は立ち往生しています。コードは次のとおりです

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 

誰でもこの問題を解決できますか?

+0

エラーは何ですか?なぜマクロが必要なのですか?リストされたフォルダはExcelにありますか?それらのすべてのサブフォルダとサブフォルダはありますか?もう少し具体的にできますか? – dgorti

+0

フォルダーとサブフォルダー内のファイルがExcelに表示されていますが、.docファイルのみを検索できませんでした。&docファイルの検索に失敗しましたが、単語を含むファイル名が見つかりませんでした。 –

+0

このコードを非常に重要なものに修正してくれますか? –

答えて

0

あなたは上記のコードで予定している場合、あなたはループ内でいくつかのコードを追加する必要があります。

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

または、そのループの上部に向かっ文がかどうかを確認する場合は、代わり、あなたが追加することができます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 

この方法で、あなただけの自分の名前のテキストに「失敗」が含まれているファイルを一覧表示します。

+0

おかげさまで助けてくれてありがとうございます。私はMicrosoft Word文書で失敗した単語を見つける必要があります。名前は_TESTSummaryですが、私は文書という単語にアクセスし、単語の文書では失敗した単語を見つける必要があります。手伝っていただけませんか ? –

+0

Word文書に編集制限または保護された文書2013があります。助けてください –

+0

Microsoft Word APIを使用する必要があるようです。ファイルを選択したら、Microsoft Wordのインスタンスを作成する(または既存のインスタンスを使用する)必要があります。 [Word](https://msdn.microsoft.com/EN-US/library/ff837519.aspx)APIコマンド –

関連する問題