Jeg har en makro som opdaterer en række regnearks i et givent directory. Problemet er at andre brugere også kan have regnearket åbent (eller der kan være gået nået galt i lukningen så det systemmæssigt på serveren er "optaget af anden bruger") når min makro kører - og i så tilfælde skal det konkrete regneark bare springes over til næste gang makroen kører.
Det lykkes nogle gange - og andre gange kommer der en prompt op om hvorvidt regnearket skal åbnes for readonly eller ej - og min makro går i stå. Jeg har forsøgt at komme af med den prompt utallige gange men den bliver ved med at komme i enkelte tilfælde.
Håber I eksperter kan se en fejl eller 2 i opbygningen af makroen:
Sub OpdaterFiler()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim fil As String
Dim wkb As Workbook
Dim wkbCurrent As Workbook
Set wkbCurrent = ActiveWorkbook
Dim previousSecurity As MsoAutomationSecurity
'Disable on_open
previousSecurity = Application.AutomationSecurity
Application.AutomationSecurity = msoAutomationSecurityForceDisable
fil = Dir(Names("Mappe2").RefersToRange.Value2 & "\*.xlsm")
Do While fil <> ""
Set wkb = Workbooks.Open(Names("Mappe2").RefersToRange.Value2 & "\" & fil, False)
If wkb.Name <> wkbCurrent.Name And wkb.ReadOnly Then
' MsgBox ("fil er allerede åben derfor ingen action")
wkb.Close SaveChanges:=False
Set wkb = Nothing
Else
' MsgBox ("fil er åben for redigering")
'Ikke skrivebeskyttet (åbnet af andre)
wkb.RefreshAll
wkb.Worksheets("Overblik").Select
wkb.Worksheets("Overblik").Unprotect
wkb.Worksheets("Overblik").Range("b1").Value2 = "Fil opdateret"
wkb.Worksheets("Overblik").Range("c1").Value2 = Now
wkb.Save
wkb.Close SaveChanges:=True
Set wkb = Nothing
End If
fil = Dir
Loop
'slå til igen
' MsgBox ("makro er færdig")
Application.AutomationSecurity = previousSecurity
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub