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!
Não Alexandre, eu já alterei isso, mas não funciona.
Seguem os detalhes encontrados...
1º Quando tento buscar o e-mail digitando o nome do contato, ele apresenta erro.
2º Quando registro a primeira entrada, funciona. Então todos os textbox são limpos e começo uma nova digitação...ai clico em registrar novamente e ele avisa que o arquivo DB_Relatórios já está aberto....se eu clico sim ele apaga a alteração anterior..se eu clico não ele da erro.
3º Quando tento gerar o relatório, no botão Gerar...ou ele está dando erro na hora de abrir a janela de impressão...ou dá erro pois o workbook ativo não é o workbook do formulário...
To tentando arrumar aqui..mas trabalhando com 3 arquivos eu to apanhando d+++...parece que nada funciona!!!!
Por fim, tem mais uma coisa que se tiver como arrumar ajuda pra caramba!!
O diretório dos arquivos está como C:...Jorge...
Não tem jeito de programar para ele procurar o arquivo dentro do mesmo diretório que o arquivo Formulário está? Assim não importa o diretório que ele estiver..ele sempre vai abrir só o arquivo que está no mesmo folder...
Valeu mesmo a força Alexandre....você está ajudando pra cabamba! Espero conseguir algo me virando aqui..mas conto com sua ajuda!
Att,
Jorge.
Esqueci de anexar...segue o anexo agora..
Quanto a questão da impressão aqui funcionou sem problemas;....
Alterei os seguintes trechos:
Private Sub Text_Contato_Exit(ByVal Cancel As MSForms.ReturnBoolean) With Workbooks("DB_Clientes.xlsm") .Sheets("Busca").Range("B4").Value = Text_Contato Relatório_Comercial.Text_Mail.Text = .Sheets("Busca").Range("C4").Text 'Faltou um ponto antes de .Sheets("Busca"), pois a abaestá no Workbooks("DB_Clientes.xlsm") End With End Sub
Alterado e acrescetado os procedimentos.....
Private Sub UserForm_Activate() VerificaDB_ClientesAberto ' ' On Error GoTo Abrir ' Windows("DB_Clientes.xlsm").Visible = False 'Coloca o arquivo como oculto, se der erro é porque o arquivo não está aberto. ' Exit Sub 'Abrir: 'Se der o erro, abre o arquivo e o coloca oculto ' Debug.Print ThisWorkbook.Path ' ChDir ThisWorkbook.Path ' Workbooks.Open Filename:="DB_Clientes.xlsm" ' Windows("DB_Clientes.xlsm").Visible = False ' ComboBox_Cliente.RowSource = ComboBox_Cliente.RowSource 'Atualiza conforme a fonte de dados End Sub Private Sub VerificaDB_ClientesAberto() Dim I As Integer Dim Aberto As Boolean Aberto = False For I = 1 To Workbooks.Count If Workbooks(I).Name = "DB_Clientes.xlsm" Then Aberto = True Exit For End If Next If Not Aberto Then ChDir ThisWorkbook.Path Workbooks.Open Filename:="DB_Clientes.xlsm" Windows("DB_Clientes.xlsm").Visible = False ComboBox_Cliente.RowSource = ComboBox_Cliente.RowSource 'Atualiza conforme a fonte de dados End If End Sub Private Sub VerificaDB_RelatoriosAberto() Dim I As Integer Dim Aberto As Boolean Aberto = False For I = 1 To Workbooks.Count If Workbooks(I).Name = "DB_Relatórios.xlsx" Then Aberto = True Exit For End If Next If Not Aberto Then ChDir ThisWorkbook.Path Workbooks.Open Filename:="DB_Relatórios.xlsx" End If End Sub
O arquivo de DB_Relatórios será fechado após registrar... O DB_Clientes só será fechado durante o fechamento do Formulário...
Para que o DB_Clientes é verificado se está aberto? Tem necessidade
Verifica se a última linha é realmente necessária.... ComboBox_Cliente.RowSource = ComboBox_Cliente.RowSource
Private Sub CommandButton_Registrar_Click() ' On Error GoTo Abrir ' Windows("DB_Clientes.xlsm").Visible = False 'Abrir: ' Workbooks.Open Filename:="C:UsersJorgeDesktopProjeto ExcelDB_Clientes.xlsm" ' Windows("DB_Clientes.xlsm").Visible = False VerificaDB_ClientesAberto VerificaDB_RelatoriosAberto 'Se não estiver preenchido o nome do cliente, sai da rotina sem gravar nada. If ComboBox_Cliente.Text = "" Then Exit Sub Dim Lin As Long ' Workbooks.Open Filename:="C:UsersJorgeDesktopProjeto ExcelDB_Relatórios.xlsx" Windows("DB_Relatórios.xlsx").Visible = True '### 'Sem alterações até o trecho abaixo: '### Call Clear Relatório_Comercial.TextBox_Data = Format(Date, " dd / mm / yyyy") Me.Text_Técnico.SetFocus End With 'Workbooks("DB_Clientes.xlsm").Close SAVECHANGES:=True Workbooks("DB_Relatórios.xlsx").Close SAVECHANGES:=True ComboBox_Cliente.RowSource = ComboBox_Cliente.RowSource 'Atualiza conforme a fonte de dados End Sub Private Sub CommandButton_Gerar_Click() ThisWorkbook.Activate Sheets("Relatório_Visitas").Range("J3").Value = Format(TextBox_Data, "dd/mm/yy")
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Alexandre,
Primeiramente, um Feedback sobre o que você passou:
1 - De fato a questão de impressão voltou a funcionar dps que reiniciei o computador...não alterei nada...
2 - Com relação aos códigos que você passou...
1º Código: Eu que vacilei! Faltou o procv na célula C4..acho que deletei acidentalmente e não vi...
Do mais, tudo funcionando agora!!! Falta acertar um detalhe ou 2...umas contas automáticas..mas isso acho que dou conta de achar o bug! rs
Obrigado brother!! Seu joinha ta ai!
t+