Notifications
Clear all

Verificar conexão na rede

5 Posts
3 Usuários
0 Reactions
797 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Tenho uma macro que salva na rede três planilhas de um arquivo em PDF.
A macro trava ou dá erro quando a rede está ruim ou caiu, precisando utilizar a tecla ESC.
Como verificar antes se a rede está ativa e operacional?

 
Postado : 21/04/2018 3:13 pm
(@srobles)
Posts: 0
New Member
 

Paulo,

Se houverem unidades mapeadas em seu computador, experimente o que segue abaixo:

If Dir (Z:) = "" Then
  Exit Sub
Else
   'Código á executar
End If

Espero que te ajude.

Abs

 
Postado : 21/04/2018 7:47 pm
(@xlarruda)
Posts: 0
New Member
 

Se realmente seu código gera algum erro, tente:

Sub seu_codigo()
On Error GoTo Trataerro
Seu código aqui...
Exit sub
Trataerro:
MsgBox "Por favor, verifique as conexões de rede!", vbExclamation, "Erro!"
End Sub
 
Postado : 22/04/2018 6:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Obrigado a ambos.
Realmente, se a rede está mapeada como unidades, logicamente não achando é porque a rede está inativa ou o caminho não existe.
Uso On Error Resume Next uma linha antes do salvamento em PDF, e logo após If Err.Number > 0
Dim CaminhoArq As String
Dim NomeArq As String
CaminhoArq = ActiveSheet.Range("F2").Value
NomeArq = ActiveSheet.Range("F4").Value
If Right(CaminhoArq, 1) <> "" Then CaminhoArq = CaminhoArq & ""
On Error Resume Next
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=CaminhoArq & NomeArq & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
If Err.Number > 0 Then
MsgBox "Caminho da pasta não existe!", vbExclamation, "AAAAA"
Exit Sub
End If
Não existindo o caminho a mensagem de erro é imediata.
Mas existindo o caminho e a rede estando inativa ou fraca, era para dar erro imediato e cair no IF Err.Number, mas o Excel trava e não responde, somente teclando ESC se consegue parar a macro.

 
Postado : 22/04/2018 12:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Um código que achei na Internet, que gostaria de saber se funciona tanto para rede como para internet.
E continua o código somente se a rede estiver boa: estando ruim ou com algum problema ou inativa, para o código.

Private Declare PtrSafe Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long

Public Function IsInternetConnected() As Boolean
IsInternetConnected = InternetGetConnectedStateEx(0, "", 254, 0)
End Function

Sub TestandoConexão()
If IsInternetConnected = True Then
MsgBox "Continua o código"
Else
MsgBox "Código interrompido"
End If
End Sub

 
Postado : 22/04/2018 12:43 pm