Bem vindo ao Planilhando, colega Luciano.
Quanto ao seu código, o problema de vc usar o contador/índice dos workbooks abertos para manipulá-los é que, cada vez q vc fecha um deles dentro do loop os índices mudam dinamicamente, ou seja, o que era o Workbooks(3) passa a ser o Workbooks(2), o 4 passa a ser o 3 e assim por diante, fazendo com que alguns deles "passem batidos" pelo controle. Melhor usar um for-each-next nesse caso.
Como sugestão:
Private Sub Workbook_Open()
'VERIFICANDO PASTAS DE TRABALHO ABERTAS
Dim wb As Workbook, Resposta as VbMsgBoxResult
For Each wb In Workbooks
If Not wb Is ThisWorkbook Then
Resposta = MsgBox("Deseja salvar as alterações na Pasta: " & wb.Name, vbYesNo + vbExclamation, "VALEC-SUPRO")
wb.Close SaveChanges:= (Resposta = vbYes)
End If
Next wb
Set wb = Nothing
ThisWorkbook.Application.Visible = True
Form_login.Show 'Abre o meu formulário para iniciar o sistema
End Sub
Postado : 28/09/2016 8:01 pm