Klarc
Estava apresentando o erro ainda, porém percebi que o arquivo já aberto estava ativo e ao clicar novamente para abrir o arquivo, era necessário ativar a planilha onde estava o Menu, pois o formulário estava ativo sobre o arquivo aberto.
Inclui a seguinte linha: Workbooks("MENU - teste3.xlsm").Activate
Porém agora ele não apresenta erro, mas ele não avisa que o arquivo já está aberto, e reabre o arquivo.
Private Sub bt_arquivo_Click()
Dim X, Y
Dim strPath As Variant
Dim NomeArquivo As String
Dim Posição As Variant
X = 2
Workbooks("MENU - teste3.xlsm").Activate
For Contador = 3 To Sheets("CAMINHOS").Range("B30000").End(xlUp).Row
If X = Sheets("CAMINHOS").Range("B" & Contador).Value Then
Y = Sheets("CAMINHOS").Range("D" & Contador).Value 'CAMINHO
strPath = Y
Posição = InStrRev(strPath, "", , vbTextCompare)
NomeArquivo = Mid(strPath, Posição + 1, Len(strPath) - Posição)
If IsFileOpen(NomeArquivo) Then
MsgBox "O arquivo se encontra em aberto!"
Exit Sub
End If
Application.ScreenUpdating = False
Dim FilePath As String
FilePath = ""
On Error Resume Next
FilePath = Dir(Y)
On Error GoTo 0
If FilePath = "" Then
MsgBox "Acesso ao diretório de rede indisponível. Favor verificar!", vbInformation, "Kutools for Excel"
Else
Shell "C:WINDOWSexplorer.exe """ & Y & "", vbNormalFocus
Exit Sub
End If
End If
Application.ScreenUpdating = False
Next Contador
End Sub
Private Sub bt_pasta_Click()
Dim X, Y
X = 1
For Contador = 3 To Sheets("CAMINHOS").Range("B30000").End(xlUp).Row
If X = Sheets("CAMINHOS").Range("B" & Contador).Value Then
Y = Sheets("CAMINHOS").Range("D" & Contador).Value 'CAMINHO
Application.ScreenUpdating = False
Dim FilePath As String
FilePath = ""
On Error Resume Next
FilePath = Dir(Y)
On Error GoTo 0
If FilePath = "" Then
MsgBox "Acesso ao diretório de rede indisponível. Favor verificar!", vbInformation, "Kutools for Excel"
Else
Shell "C:WINDOWSexplorer.exe """ & Y & "", vbNormalFocus
Exit Sub
End If
End If
Application.ScreenUpdating = False
Next Contador
End Sub
Function IsFileOpen(ByVal filename As String)
'Verificar se o arquivo está em aberto
Dim FileNum As Integer, errnum As Integer
On Error Resume Next
FileNum = FreeFile()
Open filename For Input Lock Read As #FileNum
Close FileNum
errnum = Err
On Error GoTo 0
Select Case errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
Case Else
'Error errnum
End Select
End Function
Postado : 26/12/2019 9:01 am