Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Endereço de rede digitado na célula

Esclarecimentos e dúvidas sob o Modelo de Aplicativo de Cadastro em VBA no Microsoft Excel publicado no site e blog http://www.tomasvasquez.com.br
NERI INACIO
Colaborador
Colaborador
Mensagens: 62
Registrado em: Sáb Fev 27, 2016 7:31 pm

Endereço de rede digitado na célula

Mensagem 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?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

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

Mensagem 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)...


NERI INACIO
Colaborador
Colaborador
Mensagens: 62
Registrado em: Sáb Fev 27, 2016 7:31 pm

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

Mensagem 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?
Anexos
Nova pasta.rar
(24.44 KiB) Baixado 322 vezes


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

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

Mensagem 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"


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


NERI INACIO
Colaborador
Colaborador
Mensagens: 62
Registrado em: Sáb Fev 27, 2016 7:31 pm

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

Mensagem 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


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

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

Mensagem 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


NERI INACIO
Colaborador
Colaborador
Mensagens: 62
Registrado em: Sáb Fev 27, 2016 7:31 pm

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

Mensagem 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...


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder