I have a macro that finds a folder and updates all Excel documents within in the same way, however I need it to ignore one but I can't make it happen.
Here's the macro:
Sub FileUpdate()
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
FolderName = (Sheets("Filepaths").Range("c22"))
If Right(FolderName, 1) <> Application.PathSeparator Then FolderName = FolderName & Application.PathSeparator
Filename = Dir(FolderName & ".xlsx")
Do While Len(Filename)
With Workbooks.Open(FolderName & Filename)
Call SheetUpdate
End With
Filename = Dir
ActiveWorkbook.Close SaveChnges = True
Loop
Application.AskToUpdateLinks = True
Application.Calculation = xlAutomatic
End Sub
The files do all need to be in the same folder, so it's unfortunate that only one can't have this macro running through it.
For clarification in case, the filepath to the folder is in a sheet called 'Filepaths' and it calls another macro called 'SheetUpdate'.
I have tried using 'If Not' to kind of make it run backwards- so it updated all documents that didn't have the name of the file I wanted to avoid. I also tried using 'Case' in different variations, but that was more of an attempt of putting other things together that I had seen work.
I'm very beginner to this and I've done a lot of searching for an answer, but i'm struggling for this specific one.
CodePudding user response:
From your description it is not completely clear how SheetUpdate
works but it seems like you are using ActiveSheet
references. You might be interested in this post if you plan on continuing to use VBA in the future.
A solution that might work for you could look like this
Sub FileUpdate()
Application.AskToUpdateLinks = False
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim filderName As String
folderName = ThisWorkbook.workshSheets("Filepaths").Range("c22").value
If Right(folderName, 1) <> Application.PathSeparator Then _
folderName = folderName & Application.PathSeparator
Dim fileName As String
fileName = Dir(folderName, vbNormal)
Do While fileName <> ""
If Not fileName = "name of file to ignore" Then
With Workbooks.Open(folderName & fileName)
Call SheetUpdate
End With
ActiveWorkbook.Close SaveChanges = True
End If
fileName = Dir
Loop
Application.AskToUpdateLinks = True
Application.Calculation = xlAutomatic
End Sub