Notifications
Clear all

Posso utilizar WORKSHEETS referenciando IP na rede?

6 Posts
2 Usuários
0 Reactions
1,542 Visualizações
(@japimentel)
Posts: 0
New Member
Topic starter
 

Olá.
Neste exemplo:

Worksheets("ato").Select
Worksheets("ato").Range("a2").Select

É possível mencionar que a planilha ato está localizada num endereço da rede? Por exemplo:

Dim ip As String
ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"
Worksheets(ip...........).select
Worksheets(ip...........).range("a2").select

Conto com vossa ajuda. Talvez isso me ajude a eliminar um erro de execução 1004 que estou encontrando ao clicar no botão SALVAR. Eu quero salvar aos informações numa planilha localizada numa rede da empresa, em uma máquina que está distante fisicamente. O erro é o do anexo.

 
Postado : 01/06/2017 6:10 am
(@basole)
Posts: 487
Reputable Member
 

Pelo que voce escreveu esta tentando referenciar uma planilha(aba) com o o caminho e uma Pasta de trabalho, por isso apresentou o erro.
Tente desta forma:

Sub Teste_IP_Path_Rede()
    Dim ip As String
    Dim Wb As Object
    Dim Ws As Worksheet
    Dim winCount As Integer
        
     ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"
       
       ' verif se caminho e arquivo existem:
    If VBA.Len(VBA.Dir(ip)) = 0 Then
       MsgBox "Caminho / Arquivo nao existe!"
    Exit Sub
    End If
    
    Set Wb = GetObject(ip)
    
    Set Ws = Wb.Worksheets("ato")
    
       Wb.Application.Visible = True
    
    For winCount = 1 To Wb.Sheets.Count
    If Wb.Sheets(winCount).Name = Ws.Name Then
       Wb.Windows(winCount).Visible = True
    End If
    Exit For
    Next
    
       Ws.Activate
       Ws.Range("A2").Activate
       ' Insira um código adicional para manipular o arquivo decretos.xlsm aqui.
       ' ......
       Wb.Close SaveChanges:=True
     Set Wb = Nothing
     Set Ws = Nothing
     
End Sub 
 
Postado : 01/06/2017 7:34 am
(@japimentel)
Posts: 0
New Member
Topic starter
 

Muito obrigado, Basole.
Se eu quisesse verificar se o caminho, o arquivo e a planilha cujo nome é ATO existem que mudanças eu faria na variável ip?

Dim ip As String
ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"

Algo assim?:

ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsmATO"

 
Postado : 01/06/2017 8:05 am
(@basole)
Posts: 487
Reputable Member
 

Amigo o codigo ja esta verificando se o caminho e o nome do arquivo *.xlsm existe e tambem ja esta verificando se a Planilha (aba) "ato" está presente.
Segue o codigo com as alteracoes com um alerta caso a Planilha ato nao exista no arquivo:

Sub Teste_IP_Path_Rede()
    Dim ip As String
    Dim Wb As Object
    Dim Ws As Worksheet
    Dim winCount As Integer
    Dim wsExist As Boolean
        
     ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"
       
    ' verif se caminho e arquivo existem:
    If VBA.Len(VBA.Dir(ip)) = 0 Then
       MsgBox "Caminho / Arquivo nao existe!"
    Exit Sub
    End If
    
    Set Wb = GetObject(ip)
    
    Set Ws = Wb.Worksheets("ato")
    
       Wb.Application.Visible = True
    ' verif se a planilha (aba) "ato" esiste na pasta de trabalho:
    For winCount = 1 To Wb.Sheets.Count
    If Wb.Sheets(winCount).Name = Ws.Name Then
       wsExist = True
       Wb.Windows(winCount).Visible = True
       Exit For
    End If
    Next
    
    If wsExist = False Then
    MsgBox "A planilha(Aba) " & Ws.Name & " nao foi encontrado em: " & vbNewLine & _
    ip
    
    Else
    
       Ws.Activate
       Ws.Range("A2").Activate
       ' Insira um código adicional para manipular o arquivo decretos.xlsm aqui.
       ' ......
    
    End If
       
       Wb.Close SaveChanges:=True
     Set Wb = Nothing
     Set Ws = Nothing
     
End Sub 

Ou se quiser transformar esta rotina em funcao:

Function Teste_IP_Path_Rede(ip As Variant, sh As String) As Boolean
    Dim Wb As Object
    Dim Ws As Worksheet
    Dim winCount As Integer
    Dim wsExist As Boolean
        
    ' verif se caminho e arquivo existem:
    If VBA.Len(VBA.Dir(ip)) = 0 Then
         Exit Function
    End If
    
    Set Wb = GetObject(ip)
    
    Set Ws = Wb.Worksheets(sh)
    
       Wb.Application.Visible = True
    ' verif se a planilha (aba) "ato" esiste na pasta de trabalho:
    For winCount = 1 To Wb.Sheets.Count
    If Wb.Sheets(winCount).Name = Ws.Name Then
       wsExist = True
       Wb.Windows(winCount).Visible = True
       Exit For
    End If
    Next
    ' verif se aba existe no arquivo:
    If wsExist = False Then
     Exit Function
    
    Else
        
    Teste_IP_Path_Rede = True
    
    End If
       
       Wb.Close savechanges:=False
       
     Set Wb = Nothing
     Set Ws = Nothing
     
End Function

Exemplo para testar a funcao:

Sub teste_IP()
Dim sh As String, ip As Variant
 
  ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"
  sh = "ato"

If Teste_IP_Path_Rede(ip, sh) Then
  MsgBox "Existe" & ip & " " & sh
Else
  MsgBox "Não existe" & ip & " " & sh
End If

End Sub
 
Postado : 01/06/2017 8:25 am
(@japimentel)
Posts: 0
New Member
Topic starter
 

Boa tarde, Basole.
Só agora, por volta das 17h, é que consegui dar uma boa olhada na sua resposta. Muito obrigado.
Criei um botão de TESTE no meu formulário e inseri o código que você me enviou:
Dim ip As String
Dim Wb As Object
Dim Ws As Worksheet
Dim winCount As Integer
Dim wsExist As Boolean
ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"
' verif se caminho e arquivo existem:
If VBA.Len(VBA.Dir(ip)) = 0 Then
MsgBox "Caminho / Arquivo nao existe!"
Exit Sub
End If
Set Wb = GetObject(ip)
....
Quando eu clico no botão teste e jogo para o depurador, ao chegar na linha Set Wb = GetObject(ip) retorna o erro que estou anexando...

O que você acha que está ocorrendo?

Grato,

José.

 
Postado : 02/06/2017 1:53 pm
(@basole)
Posts: 487
Reputable Member
 

Veja com as alteraçoes que deve funcionar:

Sub Teste_IP_Path_Rede()
    Dim ip As Variant
    Dim Wb As Workbook
    Dim Ws As Worksheet
    Dim winCount As Integer
    Dim wsExist As Boolean
        
     ip = "\192.168.100.4Atos OficiaisCADASTRODECRETOS.xlsm"
    
    ' verif se caminho e arquivo existem:
    If VBA.Dir(ip, vbDirectory) = "" Then
       MsgBox "Caminho / Arquivo nao existe!"
    Exit Sub
    End If
      
    Set Wb = Application.Workbooks.Open(ip)
    Set Ws = Wb.Worksheets("ato")
        
       Wb.Application.Visible = True
    
    ' verif se a planilha (aba) "ato" esiste na pasta de trabalho:
    For winCount = 1 To Wb.Sheets.Count
    If Wb.Sheets(winCount).Name = Ws.Name Then
       wsExist = True
       Wb.Windows(winCount).Visible = True
       Exit For
    End If
    Next
    
    If wsExist = False Then
    MsgBox "A planilha(Aba) " & Ws.Name & " nao foi encontrado em: " & vbNewLine & _
    ip
    
    Else
    
       Ws.Activate
       Ws.Range("A2").Activate
       ' Insira um código adicional para manipular o arquivo decretos.xlsm aqui.
       ' ......
    
    End If
       
       Wb.Close SaveChanges:=True
     Set Wb = Nothing
     Set Ws = Nothing
     
End Sub

 
Postado : 05/06/2017 7:29 am