Página 1 de 1

Endereço de rede digitado na célula

Enviado: Qua Nov 21, 2018 4:29 pm
por NERI INACIO
Tenho um comando assim:

Código: Selecionar todos

   Workbooks.Open ("C:\Users\Cliente-PC\Desktop\Nova pasta\DADOS\ArquivoEndereçoDireferente.xlsx")
   Worksheets("Planilha2").Range("B2").Value = Valor_a_ser_transferido.Text
    VlrRegastado.Text = Worksheets("Planilha2").Range("B4").Value
porém quero simplificar isto. Então nomeei uma célula "CaminhoCompleto". na Célula digitei o seguinte: C:\Users\Cliente-PC\Desktop\Nova pasta\DADOS\ArquivoEndereçoDireferente.xlsx que é exatamente o endereço que tinha no início do comando anterior.
Quero substituir a primeira linha para algo assim:

Código: Selecionar todos

    Workbooks.Open ("CaminhoCompleto")
    Worksheets("Planilha2").Range("B2").Value = Valor_a_ser_transferido.Text
     VlrRegastado.Text = Worksheets("Planilha2").Range("B4").Value
Porém não está funcionando. Alguém consegue me ajudar a dar o comando correto?

Re: Endereço de rede digitado na célula

Enviado: Qua Nov 21, 2018 6:15 pm
por Reinaldo
Experimente

Código: Selecionar todos

Workbooks.Open (Worksheets("Planilha2").Range("CaminhoCompleto") )...
ou ainda crie uma variavel, por exemplo Path, e atribua a essa variavel o valor da celula
Algo +/-assim

Código: Selecionar todos

Dim Path as string
Path= Worksheets("Planilha2").Range("CaminhoCompleto") 'ou Path=Worksheets("Planilha2").Range("A1")
Workbooks.Open (Path)...

Re: Endereço de rede digitado na célula

Enviado: Qui Nov 22, 2018 11:36 am
por NERI INACIO
Reinaldo

Se possível dê uma olhada no anexo que eu estou tentando fazer funcionar:
No arquivo Origem.Xlsm está o formulário.

Tem o arquivo ArquivoEndereçoDireferente.xlsx que é a planilha que recebe os dados (B2), processa e retorna para o formulário a célula (B4).

Infelizmente não estou conseguindo fazer algo que parece fácil. Veja que tem duas formas que funcionam e estão no formulário destacadas como as que funcionam.

O que eu preciso fazer é colocar a célula que nomeei como "CaminhoCompleto" e inserí-la na fórmula, pois isto evitará que entre no programa para alterar.
Pode me ajudar?

Re: Endereço de rede digitado na célula

Enviado: Qui Nov 22, 2018 12:23 pm
por Reinaldo
Experimente:
Altere de:

Código: Selecionar todos

Workbooks.Open(Worksheets("Planilha2").Range("CaminhoCompleto")).Range("B2").Value = Valor_a_ser_transferido.Value
Para:

Código: Selecionar todos

Workbooks.Open (Worksheets("Planilha1").Range("CaminhoCompleto"))
Obs.: Atente que o nome da planilha (no seu codigo "Planilha2") deve ser alterado de acordo com sua aplicação.Em seu modelo não há Planilha2 somente "Planilha1"

Re: Endereço de rede digitado na célula

Enviado: Qui Nov 22, 2018 2:23 pm
por NERI INACIO
Reinaldo
Alterei conforme a sua orientação e deu certo.
Mas tem um porém: preciso fazer um teste para ver se a planilha já está aberta, veja que no início ele abre a planilha, e sempre tenta fazer isto, em todos os dados que envio.

Ou seja, na primeira vez funciona. Na segunda ele tenta abrir o arquivo que já está aberto, gerando um erro.

Código: Selecionar todos

' PARA ENVIAR O VALOR
Workbooks.Open (Worksheets("Planilha1").Range("CaminhoCompleto"))
Worksheets("Planilha2").Range("B2").Value = Valor_a_ser_transferido.Text

' PARA BUSCAR O RESULTADO
VlrRegastado.Text = Worksheets("Planilha2").Range("B4").Value

Re: Endereço de rede digitado na célula

Enviado: Sex Nov 23, 2018 10:32 am
por Reinaldo
Não costumo utiliza/efetuar esse teste;abaixo uma função que se propõe a fazer-lo; não sei o autor e não utilizei,mas veja se auxilia

Código: Selecionar todos

Function blPastaTrabalhoAberta(s As String) As Boolean

    Dim wb As Workbook

    On Error Resume Next
    Set wb = Workbooks(s)
    On Error GoTo 0
    
    If wb Is Nothing Then
        blPastaTrabalhoAberta = False
    Else
        blPastaTrabalhoAberta = True
    End If

End Function
Abaixo um exemplo de como e feita a utilização

Código: Selecionar todos

Sub Teste()
    Dim s As String
    
    s = "CalculoComData.xls" '"teste.xlsx"
    If blPastaTrabalhoAberta(s) Then
        MsgBox "A pasta de trabalho '" & s & "' está aberta." _
          , vbInformation _
          , "Informação"
    Else
        MsgBox "A pasta de trabalho '" & s & "' não está aberta no momento." _
          , vbCritical _
          , "Erro"
    End If
End Sub

Re: Endereço de rede digitado na célula

Enviado: Sex Nov 23, 2018 5:31 pm
por NERI INACIO
Reinaldo muito obrigado pela postagem do exemplo.
Eu preciso fazer este teste pois, se colocar para abrir o arquivo sempre, na primeira vez funciona corretamente, porém ao colocar na segunda vez, ele dá um erro pois tem o comando de abrir novamente e ele já estará aberto.
A menos que tenha outra opção de fazer...