我對此有疑問。我有一個宏,讓我選擇我想要的文件夾,然後我有一個循環,它打開所有的Excel文件 我想排除這個工作簿(包含宏),所以我的想法是從名稱中排除或來自類型(xlsm)。 任何想法的方法來解決它?我想用<>一個條件,但我真的不知道在哪裏以及如何放置它。從打開所有文件夾的循環中排除此工作簿
下面的代碼 感謝您的幫助
Sub macro3()
Dim fso As Object, Dossier As Object, NomDossier, feuille As Worksheet
Dim pvtTable As Object
Dim Files As Object, File As Object, i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
NomDossier = ChoisirDossier
If NomDossier = "" Then Exit Sub
Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
Workbooks.Open Filename:=File
For Each feuille In Worksheets
If feuille.Name Like ("*TCD RETARD*") Then
feuille.Activate
Range("D14").Select
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
Sheets(2).ListObjects(1)
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
Next
Next
End If
End Sub
Function ChoisirDossier()
Dim objShell, objFolder, chemin, SecuriteSlash
Set objShell = CreateObject("Shell.Application")
Set objFolder = _
objShell.BrowseForFolder(&H0&, "Choisisser un répertoire", &H1&)
On Error Resume Next
chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
If objFolder.Title = "Bureau" Then
chemin = "C:WindowsBureau"
End If
If objFolder.Title = "" Then
chemin = ""
End If
SecuriteSlash = InStr(objFolder.Title, ":")
If SecuriteSlash > 0 Then
chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
End If
ChoisirDossier = chemin
End Function
你需要把'IF'聲明後'如果Files.Count < > 0然後'。類似於'If File <>「C:/../../ filename.xslm」Then「和代碼後面的」End If「。按照它在這篇文章中出現的方式,縮進就不會讓你感到驚訝,因爲你無法確定'End if'應該放在哪裏。我認爲只是堅持在'End Sub'之前,你會好的 – CallumDA
感謝您的回答:)我會努力的 – jmten