Pesquisa e Inserção...
 
Notifications
Clear all

Pesquisa e Inserção de dados em outro Workbook

19 Posts
2 Usuários
0 Reactions
3,054 Visualizações
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Pessoal, bom dia!

Estou tentando fazer 2 coisas, mas encontrei uma certa dificuldade e conto com vocês pra me ajudar!
Estou com um arquivo que tem 1 Form a ser preenchido e depois que tudo é preenchido, clico em OK e as informações são salvas em uma sheet (Banco_de_Dados).
Dentro desse form, existe uma combobox que busca os clientes em uma outra sheet (Clientes).
Até aqui está tudo certo, tudo funcionando lindo! No entanto, pediram para que eu separe as informações em Workbooks diferentes, ou seja, um Workbook para Clientes, um para Banco de Dados e outra para o Form.

Já copiei a sheet de clientes e joguei em outro workbook, que está no mesmo diretório do workbook do Form. Fiz um teste e eu consigo, através de um botão, abrir o workbook Clientes.
O que eu preciso fazer é, dentro da programação do Combobox que busca os clientes, ele ir até esse outro workbook e pegar as informações lá! Mas, até onde eu sei, eu tenho que configurar a propriedade RowSource..que hoje está como "Clientes!A2:A100". Como eu posso colocar o endereço da outra workbook ai dentro??

Também, eu gostaria de trabalhar com os workbooks de fonte de dados e destino de dados em background...ou seja..o workbook Clientes e o Banco de Dados..ele serão utilizados pelo workbook do Form, mas sem serem vistos...
Tentei abrir ele e em seguida alterar a propriedade visible..mas ele dá um erro...Como posso fazer isso??

Workbooks.Open Filename:="C:UsersJorgeDesktopProjeto ExcelDB_Clientes.xlsm"
    Workbooks("DB_Clientes").Visible = -2

No aguardo! Se for necessário posso postar o projeto, mas acho que isso deve ser bem simples pra vocês!

 
Postado : 17/10/2012 8:14 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Realmente não vai precisar de postar o arquivo...

Para Rowsource em outro arquivo:

'[Nome do outro arquivo.xlsx]Nome da aba'!B2:B13

Para ocultar o arquivo:

Windows("Nome do outro arquivo.xlsx").Visible = False
 
Postado : 17/10/2012 9:00 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Opa, blz..deu quase tudo certo!

Vi que ele buscou os clientes no arquivo..mas para isso o arquivo tem que estar aberto.
Então, fiz o seguinte:
No inicio da programação do combobox, que é executado em um evento Change, escrevi:

Workbooks.Open Filename:="C:UsersJorgeDesktopProjeto ExcelDB_Clientes.xlsm" 'para abrir o workbook
Windows("DB_Clientes.xlsm").Visible = False 'para deixá-lo invisível
Workbooks("DB_Clientes").Sheets("Busca").Range("B3").Value = ComboBox_Cliente 'para escrever o valor selecionado na combobox em uma célula, que é utilizada pro um procv

Com isso eu tenho Erro em tempo de execução '9'. Subscrito fora do intervalo.

Seria porque ele está tentando escrever em uma célula que ainda não abriu??
Isso ai está errado ou faltou algo?

Att,
Jorge.

 
Postado : 17/10/2012 10:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Em qual ponto ele parou o código?

 
Postado : 17/10/2012 10:31 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Na terceira linha do código acima.

 
Postado : 17/10/2012 10:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

bem provável que seja a falta da extensão no nome do arquivo...

Workbooks("DB_Clientes.xlsm").Sheets("Busca").Range("B3").Value = ComboBox_Cliente
 
Postado : 17/10/2012 10:54 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

OK, estou testando agora..enquanto isso...
Ao inves de fazer a workbook ficar invisível, quero tentar fechar ela assim que o código que precisa dela aberta for executado..então tentei..

Workbooks.Close Filename:="C:UsersJorgeDesktopProjeto ExcelDB_Clientes.xlsm"

Mas no depurador já da erro..dizendo que o número de argumentos é incorreto ou a atribuição é invalida...
Porque? Acho que já que existe a opção Close..deveria funcionar..ou não?

Att,
Jorge.

 
Postado : 17/10/2012 10:57 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Alexandre..o que aconteceu foi..

Como o comando open está no evento Change da combobox, eu não consigo selecionar nada..preciso digitar..até ai tudo bem pois eu até prefiro..
No entanto..assim que eu coloquei a primeira letra do nome do cliente ele já retornou o resultado...que no caso foi o texto "Sem Registro", que é o resultado de um procv de um texto que não existe...ai como isso as contas que são automáticas deram erro de "tipo incompatível"...pois o retorno desse procv envolve números e contas..
Será que é hora de anexar o arquivo?

 
Postado : 17/10/2012 11:02 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Sim!

 
Postado : 17/10/2012 11:28 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Seguem os arquivos em anexo.

A ideia é: Todos os arquivos deverão estar no mesmo diretório (em qualquer que seja esse diretório, pois será usado em computadores diferentes por pessoas diferentes).
Abrindo o arquivo Formulário, Abrir Formulário, Visita Comercial (que é onde já programei do jeito que você está dizendo), durante o preenchimento do arquivo vou passar pela combobox...então..conforme eu escrevo o nome do cliente na combobox ele vai atualizando de acordo com o que ele acha no arquivo DB_Clientes, ou também seria possível selecionar pois a combobox já teria carregado todos os clientes.
Depois de finalizar o preenchimento, preciso abrir o arquivo DB_Relatórios e escrever tudo que está no Form lá dentro.

Detalhes...nem o DB_Clientes nem o DB_Relatórios deve ser visivel durante a utilização do arquivo Formulário...e quando o arquivo Formulário for fechado, os outros 2 devem ser fechados tb!

Não precisa fazer a programação de todos os campos que serão escrito no DB_Relatórios...acertando um ou 2 eu replico pro resto!

Se puder ajudar com isso..agradeço!!

 
Postado : 17/10/2012 11:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fiz algumas alterações, inclusões e sugestões em:
ComboBox_Cliente_Change()
UserForm_Activate()
UserForm_Terminate()

Alterações:
[list=1]Retirada a abertura do arquivo a cada alteração na combobox[/list:o:3b222xav]
[list=2]Acrescentada a função para carregar o arquivo - Ao abrir o formulário, o arquivo de dados é aberto também[/list:o:3b222xav]
[list=3]Acrescentada a função para fechar sem salvar o arquivo de dados quando o formulário for fechado[/list:o:3b222xav]

 
Postado : 17/10/2012 12:38 pm
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

Alexandre! Você é o cara..está ficando bom..mas ainda tem algumas coisas pra arrumar e eu não estou conseguindo!!!

Tente registrar 2 relatórios seguidos...você vai ver que ele avisa..o Arquivo xxx já está aberto..deseja reabri-lo? Isso vai fazer você perder as alterações...

Com isso, se você diz sim...ele salva o novo registro..mas apaga o anterior...
Se você diz não..ele da erro!

Também, tentei usar a mesma idéia do Combobox no Text_Contato...quando eu coloco o nome do contato ele já deve me retornar o E-mail...que está sendo buscado com procv na planilha de Busca..mas tb não deu certo!

Você pode me ajudar com esses 2 errinhos?

Já agradeci! Mas quero agradecer denovo! rs

 
Postado : 17/10/2012 7:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tem que enviar as novas planilhas....

 
Postado : 18/10/2012 6:15 am
(@macabruz)
Posts: 52
Trusted Member
Topic starter
 

ta tudo no arquivo que postei anteriormente..veja a planilha DB_Clientes...use a senha 1234 para fazer o login que você verá os clientes ficticios que deixei la..
quando você digitar no text_contato dentro do form um nome de um contato cadastrado..ele deveria retornar o email no campo text_mail no evento sair da text_contato.
Isso já funcionava quando a sheet cliente estava no mesmo workbook....agora em arquivo separado não está indo!
O arquivo DB_Relatórios tb está la já..apenas tente registar 2 ocorrencias sem fechar o form..você vai ver que vai dar erro.

 
Postado : 18/10/2012 9:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Quanto ao email e contato, a macro não está escrevendo na aba Busca do DB_Clientes... está escrevendo e buscando valores na aba Clientes !?

Private Sub Text_Contato_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Sheets("Clientes").Range("Z3").Value = Text_Contato
    Me.Text_Mail.Text = Sheets("Clientes").Range("AA3").Text
End Sub

Aqui não gerou erro para emissão de relatórios seqüenciais. Tem somente uma linha onde ocorre a abertura do arquivo...

 
Postado : 18/10/2012 2:54 pm
Página 1 / 2