Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 Pesquisar em todas as planilhas

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Pesquisar em todas as planilhas   Qui Out 17, 2013 5:50 pm

Bom dia,

Gostaria de uma ajuda neste sentido; como há alguns experts no forum, creio que trarão rapidamente as informações com a resposta.
Tenho uma planilha, de cadastro de clientes feita em vba, funciona bem, porem quero que uma planilha seja, uma guia 2013, outra 2014, e assim por diante, por hora a pesquisa e recuperação de dados funciona apenas na planilha ativa, não procura noutras e traz os dados, por isso se alguém souber implementar e mudar o código um pouco, desde já agradeço:


Private Sub cmdDocumento_Click()
'Verificar se foi digitado no campo Documento o número do CPF
If txtCPF.Text = "" Then
MsgBox "Pesquisar pelo Número de CPF"
txtCPF.SetFocus
GoTo Linha1
End If
With Worksheets("2013").Range("A:A")
Set c = .Find(txtCPF.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
c.Activate
txtCPF.Value = c.Value
txtNome.Value = c.Offset(0, 1).Value
txtEndereco.Value = c.Offset(0, 2).Value
cboEstado.Value = c.Offset(0, 3).Value
cboCidade.Value = c.Offset(0, 4).Value
txtTelefone.Value = c.Offset(0, 5).Value
txtEmail.Value = c.Offset(0, 6).Value

End If
End With
Linha1:
End With
End Sub



Então a base da alteração é essa:

With Worksheets("2013").Range("A:A")

Preciso que ele entenda em pesquisar 2013, 2014, 2015 etc por hora está fazendo a pesquisa apenas nela mesma, desde já agradeço e aguardo um retorno.

Obrigado!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Qui Out 17, 2013 7:19 pm

Boa tarde!!

Aqui tem exatamente o que precisa
http://www.excelcampus.com/tools/find-all-vba-form-for-excel/

Aqui tem o arquivo que deve abixar
http://www.excelcampus.com/filedownload/Find%20All%20VBA%20Form%20-%20All%20Worksheets.xls


Veja mais
Código:
    Option Explicit


    Public MyVal As String

    Sub SuperFIND()
    'Author:    Jerry Beaucaire
    'Date:      8/13/2010
    'Summary:  Searches all sheets for any text string, activates when found
    Dim ws      As Worksheet
    Dim vFIND  As Range

    StartOver:
    MyVal = Application.InputBox("Digite o nome", "Procura em todas as Planilha", MyVal, Type:=2)
    If MyVal = "Falso" Then Exit Sub
    On Error Resume Next

        For Each ws In Worksheets
            Set vFIND = ws.Cells.Find(MyVal, LookIn:=xlValues, LookAt:=xlPart)
            If Not vFIND Is Nothing Then
                ws.Activate
                vFIND.Select
                Set vFIND = Nothing
                Exit Sub
            End If
        Next ws
     
    MsgBox "Não foi encontrado"
    GoTo StartOver

    End Sub
Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Sequencia!   Sex Out 18, 2013 1:34 pm

Olá, se não fosse pedir muito e já sendo, será Alexandrevba que você não conseguiria adaptar com o meu código este que me passou, pois não tive muito êxito...


Obrigado!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Sex Out 18, 2013 2:25 pm

Bom dia!!

Eu não garanto que será rápido.

Mande seu arquivo modelo, poste o em site gratuito como sendspace ou outros e poste o link aqui.

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Re: Pesquisar em todas as planilhas   Sab Out 19, 2013 3:11 pm

sendspace.com/file/yyifmj


Está aí Alexandre,

Creio que tire de letra, basicamente creio eu, é alterar o código do botão "Pesquisar" adaptando com aquele que passou (buscando em todas as guias), vai ajudar muita gente aí...



Muito Obrigado e aguardamos!


Abraços!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Sab Out 19, 2013 5:34 pm

Bom dia!!

O que deve acontecer, caso tenha o mesmo CPF em duas ou em 3 guias??

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Re: Pesquisar em todas as planilhas   Sab Out 19, 2013 6:13 pm

Olá Alexandre,


Então, se tiver o mesmo não tem problema, é um registro diário, pode ter duplicidade...

Na realidade a pesquisa deve ser feita em todas as planilhas (não só 2013) com ajuda do teu outro código, e trazer todos dados vinculados ao cpf, como nome, telefone, etc



Smile

É issso

Aguardamos e abraços!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Sab Out 19, 2013 10:12 pm

Boa tarde!!

Tente...
Código:

Private Sub cmdPequisar_Click()

For Each ws In ThisWorkbook.Worksheets(Array("2013", "2014", "2015"))
  'With ws.UsedRange

        With ws.Columns(1)
            Set c = .Find(txtCPF.Value, .Cells(.Cells.Count), xlValues, xlPart)

If Not c Is Nothing Then

txtCPF.Value = c.Value
txtNome.Value = c.Offset(0, 1).Value
txtEndereco.Value = c.Offset(0, 2).Value
cboEstado.Value = c.Offset(0, 3).Value
cboCidade.Value = c.Offset(0, 4).Value
txtTelefone.Value = c.Offset(0, 5).Value
txtEmail.Value = c.Offset(0, 6).Value
txtNascimento.Value = c.Offset(0, 7).Value


If c.Offset(0, 8) = "Masculino" Then
OptionButton1.Value = True
Else
OptionButton2.Value = True
End If
Else
MsgBox "Cliente não encontrado!"
End If
End With
Linha1:
Next
End Sub
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 5:39 pm

Show de bola, testei e tá rodando, ainda tenho que dar um jeito pois sempre grava na planilha de 2013, mesmo eu estando na 2014 ou 2015, mas daí me viro...



E só pra abusar mais um pouco, existe a forma de enviar por e-mail, sem passar pelo autolook a planilha usada? Testei vários comandos mas nunca deu certo de verdade, gostaria de inserir um botão, se tiver um código já pronto me ajudaria, o e-mail é do gmail!



E MAIS UMA VEZ MUITO OBRIGADO, VC É FERA!


Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 6:20 pm

Boa tarde!!
Tente adptar.
Tudo sobre Email, você encontra aqui:
http://www.rondebruin.nl/win/section1.htm
Leia também:
http://www.makeuseof.com/tag/send-emails-excel-vba/
Código:
Sub TenteAdptar()
    Dim iMsg As Object
    Dim iConf As Object
    Dim strbody As String
    Dim Flds As Variant

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")

    iConf.Load -1    '
    Set Flds = iConf.Fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "*************@gmail.com"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*********"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Update
    End With

    With Sheets("Sheet1")
    strbody = "Assunto:" & vbNewLine & vbNewLine & _
        .Range("A1")
    End With

    With iMsg
        Set .Configuration = iConf
        .To = "**********@gmail.com"
        .CC = ""
        .BCC = ""
        .From = """"" <*********@gmail.com>"
        .Subject = "Important message"
        .TextBody = strbody
        .Send
    End With


End Sub
Código:
Private Sub btnSubmit_Click()
Dim iMsg As Object
Dim iConf As Object
Dim strbody As String
Dim NewFile As String
Dim Flds As Variant
   
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   
    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    'Copia o atual Livro (xls) para outro com formatos e valores.
    'Está nova copia será anexada
    Call Create_File

    iConf.Load -1
    Set Flds = iConf.Fields
    With Flds
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "our work server name"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        '.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
        '.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        .Update
    End With
   
    With iMsg
        Set .Configuration = iConf
        .To = "Endereço Para:"
        .CC = ""
        .BCC = ""
        .From = "Endereço De:"
        .Subject = "Assunto - " & Range("C5").Value
        .AddAttachment "C:\NomeArquivo.xls" '<- local e nome do arquivo
        '.TextBody = strbody
        .Send
    End With
   
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub
Att:bounce: 
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 6:31 pm

Então..


Ele dá erro no "Call Create_File"


Diz que não foi definido valores (acho eu)
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 6:35 pm

Boa tarde!!

O que eu mandei é apenas uma parte do caminho, você terá que fazer algumas alterações.
Eu não sei se você leu o link, mas caso não tenha terá que adicionar a biblioteca CDO.

Citação :
"When Excel opens up the VBA editor, you’re going to need to add the reference to the CDO library. You can access this in the Tools menu, and then scroll down the list until you find “Microsoft CDO for Windows 2000 Library“. Select the checkbox and click OK
Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 6:38 pm

Eu vi sim, adicionei nas opções...


Ainda sim dá o erro como mencionei, pois é terei que dar uma mexida pois ao menos aqui não teve jeito...



De qualquer forma um abraço e muito obrigado!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 6:47 pm

Boa tarde!!

Se você observar o comando CALL, está chamando uma macro para criar arquivos, você tem duas opção, ou cria a sua própria macro para criar arquivos ou use dentro do corpo de código para enviar Email.

tente tirar a linha "Call Create_File" lembre-se não criará o arquivo, para isso você terá que ter uma macro para tal.

Obs: eu não testei nenhum dos códigos

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
celliusctba



Mensagens : 23
Data de inscrição : 17/10/2013

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 9:33 pm

.Send
End With

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub


Ele dá erro na depuração bem no comando .Send


De qualquer forma tô tentando, rs


Obrigado!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
alexandrevba



Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

MensagemAssunto: Re: Pesquisar em todas as planilhas   Seg Out 21, 2013 10:01 pm

Boa tarde!!

Lembre sempre de mandar o tipo de Erro, geralmente é um número.

Att
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Pesquisar em todas as planilhas   Hoje à(s) 5:15 am

Voltar ao Topo Ir em baixo
 
Pesquisar em todas as planilhas
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» Novo jogo do Mundial MX todas as consolas e PC!!!
» todas as marcas de pneus
» Coluna lateral do portal em todas páginas
» Primeira mensagem do tópico em todas as páginas
» Inserir copyright em todas as páginas

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: