2017-03-08 76 views
1

我正在使用下面的VBA代碼來列出文件夾中的所有excel文件。VBA列出文件夾中的所有文件,工作50%的時間?

由於某種原因,這隻能正確工作50%的時間。

比方說,我有一個文件夾中有12個excel文件,然後有時只列出1個文件,然後其他時間列出所有文件。

請問有人可以告訴我我要去哪裏?

Sub List() 

On Error GoTo Message 
ActiveSheet.DisplayPageBreaks = False 
Application.DisplayAlerts = False 
Application.ScreenUpdating = False 
Dim objFSO As Object 
Dim objFolder As Object 
Dim objFile As Object 
Dim i As Integer 
Dim i2 As Long 
Dim i3 As Long 
Dim j2 As Long 
Dim name As String 
Dim Txt As String 
'Create an instance of the FileSystemObject 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
'Get the folder object 
Set objFolder = objFSO.GetFolder(ThisWorkbook.Worksheets(1).Range("M4").value) 
i = 18 
'loops through each file in the directory and prints their names and path 
For Each objFile In objFolder.files 
'print file path 
Cells(i, 6) = objFile.path 

'print file path 
Cells(i, 7) = Replace(objFile.name, ".xlsx", "") 

'print file removal icon 
Cells(i, 30) = "Remove" 

'Add Hyperlink 
ThisWorkbook.Worksheets(1).Hyperlinks.Add Anchor:=Cells(i, 27), Address:=objFile.path, TextToDisplay:="Open Announcement" 





'Lookup contact info 

Cells(i, 11).Formula = "=IFERROR(INDEX(Contacts!$C:$C,MATCH(""*"" & """ & Range("G" & i).value & """ & ""*"",Contacts!$B:$B,0)),IFERROR(INDEX(Contacts!$C:$C,MATCH(""*"" & """ & Left(Range("G" & i).value, 7) & """ & ""*"",Contacts!$B:$B,0)),""""))" 
Cells(i, 14).Formula = "=IF(""" & Range("K" & i).value & """ = """","""",IFERROR(INDEX(Contacts!$D:$D,MATCH(""*"" & """ & Range("K" & i).value & """ & ""*"",Contacts!$C:$C,0)),""""))" 
Cells(i, 18).Formula = "=IF(""" & Range("K" & i).value & """ = """","""",IFERROR(INDEX(Contacts!$E:$E,MATCH(""*"" & """ & Range("K" & i).value & """ & ""*"",Contacts!$C:$C,0)),""""))" 
Cells(i, 23) = "=IF(K" & i & "="""",""Missing Contact! "","""")&IF(INDEX(Data!L:L,MATCH(G" & i & ",Data!F:F,0))=""TBC"",""Missing Data! "","""")&IF(U" & i & ">=DATE(2017,1,1),"""",""Check Date!"")" 

'Delivery Dates 
Cells(i, 21).Formula = "=IFERROR(INDEX(Data!$Q:$Q,MATCH(""*"" & """ & Range("G" & i).value & """ & ""*"",Data!$F:$F,0)),IFERROR(INDEX(Data!$Q:$Q,MATCH(""*"" & """ & Left(Range("G" & i).value, 7) & """ & ""*"",Data!$F:$F,0)),""""))" 


Cells(i, 25) = "Sync" 






i = i + 1 

Next objFile 

ThisWorkbook.Worksheets(1).Calculate 

Application.DisplayAlerts = True 
Application.ScreenUpdating = True 


Exit Sub 
Message: 
Application.DisplayAlerts = False 
Exit Sub 
End Sub 
+3

擺脫'On Error Goto Message'並查看是否有任何錯誤被拋出。另外,請在發佈前格式化(縮進)您的代碼。 – FunThomas

+0

任何關於'ThisWorkbook.Worksheets(1).Range(「M4」)。value'的內容可能會限制文件被返回? –

回答

相關問題