Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Indireto com referência externa sem abrir outro arquivo
Indireto com referência externa sem abrir outro arquivo
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/
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/
Re: Indireto com referência externa sem abrir outro arquivo
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/
http://www.scriptbrasil.com.br/forum/to ... -indireto/
- netocasaroli
- 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
Envie suas planilhas aqui para que possamos dar uma olhada melhor...
- Reinaldo
- 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
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
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
Re: Indireto com referência externa sem abrir outro arquivo
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
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
- netocasaroli
- 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
Acho que a melhor solução será através do VBA... Tentou alguma coisa nesse sentido?
Re: Indireto com referência externa sem abrir outro arquivo
Não manjo de VBA cara... =/netocasaroli escreveu:Acho que a melhor solução será através do VBA... Tentou alguma coisa nesse sentido?
Re: Indireto com referência externa sem abrir outro arquivo
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,
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,