Notifications
Clear all

IMPORTAR DADOS DE OUTRA WORKBOOK

11 Posts
3 Usuários
0 Reactions
7,237 Visualizações
(@eng_sidnei)
Posts: 27
Eminent Member
Topic starter
 

Boa noite, Conclui com ajuda de voces o form de CADASTRO de fornecedores que vou chamar aqui de WORKBOOK 1.

Dando prosseguimento ao projeto, agora estou fazendo o form de CONTRATO que vou chamar aqui de WORKBOOK 2.

Devido as peculiaridades do projeto é necessario ser duas pastas de trabalho (por enquanto).

Gostaria de saber como importar algumas informações contidas na WORKBOOK1 para as textbox do form na WORKBOOK2, sem exibir a WORKBOOK1 e suas informações.

 
Postado : 24/02/2012 9:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Amigo,

Posta o modelo dos dois Workbooks que fica mais fácil ajudar...

Abraço :mrgreen:

 
Postado : 25/02/2012 2:39 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ficou um pouco confuso a questão :

form de CADASTRO de fornecedores que vou chamar aqui de WORKBOOK 1
form de CONTRATO que vou chamar aqui de WORKBOOK 2

Acredito que estamos falando de Formulários contidos em WORKBOOKs diferentes ou dois Formulários em um só WorkBook, mas e as Sheets quais seriam ?

Antes de continuarmos, precisamos ter em mente o conceito referente a:
Pasta e Planilha (Workbook, Worksheet), e como é um assunto um pouco complexo e Longo, vocês podem usar a própria Ajuda do VBA para entender um pouco mais ou nos endereços abaixo, aonde tem as definições muito bem explicadas.

1) Lição 04: VBA - Trabalhando com o objeto Application
http://www.juliobattisti.com.br/excel12 ... licao4.htm

2 ) Lição 05: Trabalhando com o Objeto Workbook
http://www.juliobattisti.com.br/excel12 ... licao5.htm

3 ) Lição 06: Trabalhando com o Objeto Worksheet
http://www.juliobattisti.com.br/excel12 ... licao6.htm

No Forum abaixo eu cheguei a colocar alguns conceitos de se utilizar duas Pastas (WorkBooks) e referencia-las, tambem as Worksheets, de uma olhada, se estamos falando do mesmo assunto, no site tambem tem outros exemplos e um onde anexei, utilizando mais de um BD.

Modelo Cadastro V3 - Adaptações
http://www.tomasvasquez.com.br/forum/vi ... f=16&t=595

[]s

 
Postado : 25/02/2012 2:53 pm
(@eng_sidnei)
Posts: 27
Eminent Member
Topic starter
 

Obrigado por responder Mauro.

Segue arquivos anexo. Tenho duas pastas de trabalho: CADASTRO e CONTRATO. O form cadastro esta concluido, estou iniciando o desenvolvimento do form contrato.

Acontece que no form contrato preciso de algumas informações da pasta fornecedores.
Estas inforamções devem ser salvas em uma memoria temporaria, para na conclusão do cadastro salva-las na aba 46 (numero do contrato), linhas 4 a 7, do contrato.

 
Postado : 25/02/2012 5:21 pm
(@eng_sidnei)
Posts: 27
Eminent Member
Topic starter
 

ERRATA:

Acontece que no form contrato preciso de algumas informações da pasta CADASTRO.
Estas inforamações devem ser salvas em uma memoria temporaria, para na conclusão do CONTRATO salva-las na aba 46 (numero do contrato), linhas 4 a 7.

 
Postado : 25/02/2012 5:32 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sidnei,

Fazer o vinculo entre os dois arquivos não é o problema, aqui no proprio forum você encontra muito matérial para criar isso ou pesquisando no Google. O grande problema em gerar esse tipo de vinculo é que o excel não consegue pegar esse arquivo fechado e fazer a leitura dos dados. Resumindo: O arquivo que conter as informações que você quer importar para o outro arquivo, precisa estar aberto.

Existe algumas formas de contornar esse tipo de problema, vai depender da sua imaginação/necessidade. De uma olhada no matérial abaixo do site www.guiadoexcel.com.br , o Marcos Ripper dono do site, disponibilizou dois bons exemplos que podem ajudar você, sobre esse assunto.

Guia do Excel Link 1: http://guiadoexcel.com.br/relatorio-com ... o-indireto
Guia do Excel Link 2: http://guiadoexcel.com.br/relatorio-com ... indireto-2

Depois da leitura desses posts veja se facilita.

Abraço! :mrgreen:

 
Postado : 26/02/2012 10:42 am
(@eng_sidnei)
Posts: 27
Eminent Member
Topic starter
 

Obrigado Walter, pela atenção e pelas discas.
Pesquisando pela web encontrei o seguinte código, ele funciona bacana, importando dados de uma planilha para outra. Veja se com seu conhecimento é possivel adpatar uma cbobox para listar os cadastrados e disponibilzar para os contratos.

'1) BUSCA FORNECEDOR NA WORKBOOK CADASTRO

Sub ReadDataFromAllWorkbooksInFolder()
Dim FolderName As String, wbName As String, cValue, cValue2 As Variant
Dim wbList As String, sValuePlan1, sValuePlan2 As String

'Path (Diretorio) -Ajustar o Caminho
FolderName = "C:UserssidDesktopSIG OBRAS"

'Nome do Arquivo de onde extrairemos a informação
wbName = Dir(FolderName & "" & "CADASTRO.xls")
'Armazenamos nas Variaveis
wbList = wbName

'le o Valor no workbook
cValue = GetInfoFromClosedFile(FolderName, wbList, "fornecedores", "D1")
cValue2 = GetInfoFromClosedFile(FolderName, wbList, "fornecedores", "J1")

'Msgbox com o Valor em A1
MsgBox "O Valor em A1 - Plan1 é :- " & cValue
MsgBox "O Valor em b1 - Plan1 é :- " & cValue2

'Coloca o Valor na Celula
Cells(1, 12).Formula = cValue
Cells(1, 13).Formula = cValue2

End Sub

'2) INFORMA ALGUMA COISA PARA O CODIGO 1 FUNCIONAR

Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, _
wsName As String, _
cellRef As String) As Variant

Dim arg As String
GetInfoFromClosedFile = ""

If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""

If Dir(wbPath & "" & wbName) = "" Then Exit Function

arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)

On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)

End Function

 
Postado : 27/02/2012 6:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Achei um pouco confuso a explicação, se puder exclarecer melhor:

Quanto a rotina que postou, acredito que pegou de uma adaptação que postei no Forum da Info:
Codigo VBA p/ Importar dados de uma planilha sem abri-la
http://info.abril.com.br/forum/viewtopi ... 49&t=13878

E a fonte com a rotina sem a adaptação está no site abaixo :
Read information from a closed workbook using VBA in Microsoft Excel
http://www.exceltip.com/st/Read_informa ... l/473.html

[]s

 
Postado : 27/02/2012 8:36 pm
(@eng_sidnei)
Posts: 27
Eminent Member
Topic starter
 

Mauro, voce é ninja mesmo hein rapá.... rsrsr

Seguinte:

Gostaria de conseguir fazer o dado armazenado em "cvalue" ficasse em uma lista suspensa na combobox .

..................................................

Outra coisa, será que voce pode me fazer alguns comentarios sobre a rotina abaixo explicando o que é cada linha? Talvez, se eu conseguir entender a rotina eu consiga fazer o que estou pensando....

Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, _
wsName As String, _
cellRef As String) As Variant

Dim arg As String
GetInfoFromClosedFile = ""

If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""

If Dir(wbPath & "" & wbName) = "" Then Exit Function

arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)

On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)

End Function

 
Postado : 28/02/2012 5:42 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sidnei, esta função faz verificação se o caminho e nome do arquivo estão corretos e monta os argumentos para a formula de retorno.

wbPath = O caminho definido
wbName = Nome do Arquivo (WorkBook = Pasta .xls)
wsName = Nome da Aba (sheet, planilha)
cellRef = a celula definida (A1)

Verifica se existe o separador "" no final do caminho
If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""

Verifica se o caminho +onome do arquivo estão corretos, então sai da rotina
If Dir(wbPath & "" & wbName) = "" Then Exit Function

Monta a variavel "arg" :
arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)

Como na rotina de chamada temos :
cValue = GetInfoFromClosedFile(FolderName, wbList, "Plan1", "A1")

arg seria :
C:Foldername[Teste.xls]Plan1'!R1C1

e o Método ExecuteExcel4Macro executa a função:
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)

Veja na ajuda do VBA sobre ExecuteExcel4Macro
Método ExecuteExcel4Macro
Consulte também Aplica-se a Exemplo EspecificaesExecuta uma função de macro do Microsoft Excel 4.0 e então retorna o resultado da função. O tipo retornado depende da função.

No site abaixo tem um exemplo bem interessante sobre o assunto :
Get cell values from closed Excel files
http://www.interactiveds.com.au/software.html
Excel macros to retrieve data from closed files
Baixe o arquivo : "GetValue.zip" - tem varias formas de utilizar a função.

Uma pergunta:
Esta função é para retornar o valor em uma celula pre determinada, ela não funciona como a função "PROCV", se for esta sua intenção, temos de utilizar a função "VLookup".

[]d

 
Postado : 28/02/2012 8:29 pm
(@maria_vba)
Posts: 0
New Member
 

Pessoal,

Se eu desconheço o wsName como posso colocar nesta função?
Nos exemplos que encontrei na internet, existe apenas o "Plan1", mas no meu caso não sei o nome da sheet e a função também não aceita por índice.

Tem alguma alternativa?

Obrigada.

 
Postado : 06/11/2016 2:04 pm