2015-06-19 80 views
0

我有.txt文件的文件夾:搜索excel列中的所有列,並檢查文件夾中文件名的值以查看是否存在?

\\uksh000-file06\SharedAreas\1.0 Hewden Public\NS\Approval 

每個文本文件中有一個隨機的名字,像這樣:

NS123SHS.txt 
NSg234eH.txt 
NSds3461.txt 

大多數文件的文件名(減去extenstion .TXT)都在我在c欄的excel表格。

NS123SHS 
NSds3461 

我想掃描列c,檢查文件名是否在我的文件夾目錄中找到,如果是顯示消息說找到,否則顯示消息說找不到。

到目前爲止,我所能弄清楚的是如何掃描我的列以獲得特定的值,但是我希望能夠掃描整個列,並比較每個值以查看它是否存在在我的文件夾?

有人可以告訴我我該怎麼做嗎?由於

Private Sub Workbook_Open() 

Dim FindString As String 
Dim Rng As Range 
FindString = "NSds3461" 
If Trim(FindString) <> "" Then 
    With Sheets("Home").Range("C:C") 'searches all of column A 
     Set Rng = .Find(What:=FindString, _ 
         After:=.Cells(.Cells.Count), _ 
         LookIn:=xlValues, _ 
         LookAt:=xlWhole, _ 
         SearchOrder:=xlByRows, _ 
         SearchDirection:=xlNext, _ 
         MatchCase:=False) 
     If Not Rng Is Nothing Then 
      MsgBox "found" 'value not found 
     Else 
      MsgBox "Reference Not Found" 'value not found 
     End If 
    End With 

End If 
+0

看看了'Dir'功能。它將允許您在文件夾內搜索具有給定名稱的文件。如果你想瀏覽整個專欄,你需要在Range中使用'For Each'循環來代替'Find'。 –

回答

0

在代碼波紋管,你必須與你的信息更新工作表()到你的文件名錶索引,FOLDER_PATH:

\\uksh000-file06\SharedAreas\1.0 Hewden Public\NS\Approval

Option Explicit 

Private Sub Workbook_Open() 

    Const FOLDER_PATH As String = "C:\temp\" 
    Const FILE_NAME_COL As Long = 3 

    Dim fileNames As Variant, ws As Worksheet, i As Long 
    Dim fName As String, result As String 

    Set ws = Worksheets(1) 

    fileNames = ws.UsedRange.Columns(FILE_NAME_COL) 

    For i = 2 To UBound(fileNames) 

     fName = Trim(fileNames(i, 1)) 

     If Len(Dir(FOLDER_PATH & fName)) > 0 Then 
      fName = fName & vbTab & ": Found" & vbCrLf 
     Else 
      fName = fName & vbTab & ": Not Found" & vbCrLf 
     End If 

     result = result & i - 1 & ". " & vbTab & fName 
    Next 

    MsgBox result, , "Search Result" 

End Sub 

結果:

enter image description here

希望它可以幫助

相關問題