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

Indireto com referência externa sem abrir outro arquivo

Dúvidas gerais sobre Excel
Avatar do usuário
mdd726
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Jun 14, 2015 3:40 pm

Indireto com referência externa sem abrir outro arquivo

Mensagem por mdd726 »

Olá Pessoal,

Estou com um problema, talvez alguém saiba a solução. Já busquei em muitos fóruns e não encontrei nada que resolva.

Quero utilizar a função INDIRETO para buscar dados em um outro arquivo de Excel (dados externos, em outra pasta de trabalho).
Entretanto, conforme explicado no site da Microsoft (https://support.microsoft.com/pt-br/kb/151323 - em "Mais informações"), a função INDIRETO só consegue trabalhar com dados externos se o outro arquivo estiver aberto. Quando o arquivo é fechado, a função retorna o erro erro #REF!

Alguém sabe alguma forma de contornar esse problema?

Seguem alguns links de outras pessoas com esse mesmo problema, não solucionado:
http://www.planilhando.com.br/forum/vie ... =10&t=8212
http://forum.baboo.com.br/index.php?/to ... o-fechada/

:roll:


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
mdd726
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Jun 14, 2015 3:40 pm

Re: Indireto com referência externa sem abrir outro arquivo

Mensagem por mdd726 »

Encontrei uma possível solução no link abaixo, mas o arquivo para download não está disponível =/

http://www.scriptbrasil.com.br/forum/to ... -indireto/


Avatar do usuário
netocasaroli
Consultor
Consultor
Mensagens: 219
Registrado em: Seg Mai 11, 2015 5:24 pm
Localização: Londrina-PR

Re: Indireto com referência externa sem abrir outro arquivo

Mensagem por netocasaroli »

Envie suas planilhas aqui para que possamos dar uma olhada melhor...


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: Indireto com referência externa sem abrir outro arquivo

Mensagem por Reinaldo »

Como foi dito no site da microsoft de no forum plailhando, indireto somente com as planilhas abertas.
Infelizmente não tenho mais o arquivo que disponibilizei no tópico do planilhando,bem como o site Ambiente Office foi repaginado, e o link está inativo; porem se dispuser um modelo de seus arquivos (dados ficticios porem representativos da estrutura da(s) planilhas) demosntrando como é e como deseja, pode teruma resposta que lhe atenda


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
mdd726
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Jun 14, 2015 3:40 pm

Re: Indireto com referência externa sem abrir outro arquivo

Mensagem por mdd726 »

Primeiramente agradeço o retorno e a disposição de vocês em ajudar.

Seguem em anexo dois arquivos para exemplificar meu problema, o Arquivo_A.xlsx e o Arquivo_B.xlsx
Consideraremos os dois arquivos salvos no endereço "C:\".

Quando temos os dois arquivos abertos no Excel, as células B2, B3, C2 e C3 do Arquivo_A.xlsx retornam o resultado 700
Porém, quando fechamos o Arquivo_B.xlsx, as células C2 e C3 do Arquivo_A.xlsx retornam como resultado o erro #REF!

Isso acontece porque a função INDIRETO só consegue trabalhar com referências externas se o arquivo da referência externa estiver aberto, conforme explica no site da Microsoft. Eu estou buscando uma alternativa para contornar essa limitação.

Encontrei mais alguns links falando disso, porém meu inglês não é tão bom e não entendi a solução, talvez algum de vocês possa me ajudar.
http://stackoverflow.com/questions/2846 ... iable-shee

Ps.: Arquivos criados no Excel 2016
Anexos
Arquivos.rar
Arquivo_A.xlsx e Arquivo_B.xlsx
(12.55 KiB) Baixado 560 vezes


Avatar do usuário
netocasaroli
Consultor
Consultor
Mensagens: 219
Registrado em: Seg Mai 11, 2015 5:24 pm
Localização: Londrina-PR

Re: Indireto com referência externa sem abrir outro arquivo

Mensagem por netocasaroli »

Acho que a melhor solução será através do VBA... Tentou alguma coisa nesse sentido?


Avatar do usuário
mdd726
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Dom Jun 14, 2015 3:40 pm

Re: Indireto com referência externa sem abrir outro arquivo

Mensagem por mdd726 »

netocasaroli escreveu:Acho que a melhor solução será através do VBA... Tentou alguma coisa nesse sentido?
Não manjo de VBA cara... =/


Avatar do usuário
Cid
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Mai 28, 2019 10:13 am

Re: Indireto com referência externa sem abrir outro arquivo

Mensagem por Cid »

Tente isso!

Com o Excel aberto vá em Arquivo > Opções > Personalizar Faixa de Opções
Assine a caixinha DESENVOLVEDOR e de OK
Clique na Guia Desenvolvedor > Visual Basic > Selecione sua Planilha no lado esquerdo superior
No cabeçalho procure por INSERIR > Modulo
um novo modulo foi adicionado uma tela em branco vai abrir copie o cole esse código abaixo e pronto


Function INDIRETOEXT(xref As String) As Variant

'inspired by Bob Phillips and Laurent Longre
'but written by Harlan Grove
'-----------------------------------------------------------------
'Copyright (c) 2003 Harlan Grove.
'
'This code is free software; you can redistribute it and/or modify
'it under the terms of the GNU General Public License as published
'by the Free Software Foundation; either version 2 of the License,
'or (at your option) any later version.
'-----------------------------------------------------------------

Dim xlapp As Object, xlwb As Workbook
Dim b As String, r As Range, C As Range, n As Long

INDIRETOEXT = Evaluate(xref)

If CStr(INDIRETOEXT) = CStr(CVErr(xlErrRef)) Then
On Error GoTo CleanUp

Set xlapp = CreateObject("Excel.Application")
Set xlwb = xlapp.Workbooks.Add

On Error Resume Next 'now clean-up can wait

n = InStr(InStr(1, xref, "]") + 1, xref, "!")
b = Mid(xref, 1, n)

Set r = xlwb.Sheets(1).Range(Mid(xref, n + 1))

If r Is Nothing Then
INDIRETOEXT = xlapp.ExecuteExcel4Macro(xref)
Else
For Each C In r
C.Value = xlapp.ExecuteExcel4Macro(b & C.Address(1, 1, xlR1C1))
Next C

INDIRETOEXT = r.Value
End If

CleanUp:
If Not xlwb Is Nothing Then xlwb.Close 0
If Not xlapp Is Nothing Then xlapp.Quit
Set xlapp = Nothing
End If

End Function



'Uma nova formula estará disponível no arquivo, INDIRETOEXT
'ela tem a mesma função do INDIRETO porem em arquivos externo e fechado também funciona!

'Espero ter ajudado!

'Credito,just_jon,mrexcel,


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