Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
  • Avatar do usuário
#9327
Caros Colegas,

Venho aqui novamente solicitar a ajuda de vocês com um problema que me deparei recentemente.

tenho o codigo abaixo me passado pelo nosso colega @Startec em outro tópico, que basicamente traz os dados das colunas selecionadas através de um conexão ADODB .
Código: Selecionar todos
Sub ImportarDadosdeOutraPlanilha()
'  ******  Habilitado a referencia ' Microsoft ActiveX Data Objects X.XX Library'  ******

                '  Rotina que importa dados da Planilha (aba) REDE

    Dim strDB As String
    Dim strSQL As String
    Dim adoRecSet As New ADODB.Recordset
    Dim connDB As New ADODB.Connection
    Dim cmd As ADODB.Command
    Dim i As Long
    Dim uL As Long
    Dim contaDados As Integer
     i = 2
     
    On eror GoTo Erro
    
    With Worksheets("Depositos")
    
   uL = .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
   .Range("A2:E" & uL).ClearContents     '  Limpa os dados importados anteriormente
   
    End With
    
        '  * * * * * *  AQUI: Habilite e ajuste a linha abaixo e desabilite a linha mais abaixo * * * * * *
 '  strDB = " \\fwscorp\compartilhamento\AquiNomeDaPlanilhaEmRede.xlsx"
    strDB = ThisWorkbook.Path & "\ADODB excel.xlsx"

    connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB _
                                  & ";Extended Properties=;" & "Excel 12.0 Xml;HDR=YES;IMEX=1;"
                                  
    strSQL = "SELECT  * FROM [REDE$A1:H]"   'Altere aqui de acordo com o nome da sua planilha(aba), mantendo o($) na rede
  
    adoRecSet.Open Source:=strSQL, ActiveConnection:=connDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic
    

While Not adoRecSet.EOF

With Worksheets("Depositos")

' insere os dados importados na aba depositos
.Range("A" & i) = adoRecSet.Fields(0)
.Range("B" & i) = adoRecSet.Fields(1)
.Range("C" & i) = adoRecSet.Fields(2)
.Range("D" & i) = adoRecSet.Fields(3)
.Range("E" & i) = adoRecSet.Fields(4)
contaDados = contaDados + IIf(adoRecSet.Fields(0) <> "Nulo", 1, 0)
End With

adoRecSet.MoveNext
i = i + 1

Wend

adoRecSet.Close
Set adoRecSet = Nothing
If contaDados > 0 Then MsgBox contaDados & " linha(s) importada(s)", vbDefaultButton1, "Aviso"
Exit Sub

Erro: adoRecSet.Close
Set adoRecSet = Nothing
MsgBox Err.Description

End Sub

A duvida surgiu quando eu estava fazendo alguns testes e me deparei com a necessidade de fazer um "filtro" no recordset do ADODB pesquisei um pouco e cheguei no seguinte codigo:
Fonte do codigo : http://www.macoratti.net/ado_filt.htm

Código original :
Código: Selecionar todos
rs.Filter = "criterio" 
Critérios que preciso:
Código: Selecionar todos
rs.Filter = "DEPOSITO RECURSAL" 
Código: Selecionar todos
rs.Filter = "DEPOSITO JUDICIAL" 
mas não tenho ideia de onde coloca-lo no codigo.
o filtro basicamente teria que trazer para a aba recursal e para a aba judicial os dados tendo como "filtro" o nome na coluna NOME DA VERBA.

Obs: segue em anexo as planilhas.

Obrigado novamente pela atenção.
CristopherFK
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por Cristopherfk em 04 Abr 2016 às 20:50, em um total de 3 vezes.
#9328
Bom dia,

Favor corrigir o título do tópico.

Regra nº 2A:
Os membros devem postar de maneira que seja consistente com a "escrita normal". Os membros não devem usar quantidades excessivas de emoticons, não devem usar CAIXA ALTA EM EXCESSO, ou usar quantidades excessivas de pontuação, seja em posts ou títulos.

Se o título não for corrigido em 24 horas, o tópico será excluído


Att
Moderador
#9345
Faltaram as planilhas, então carece de testes:
Pode fazer a seleção/filtro ja no inicio:
Código: Selecionar todos
strSQL = "SELECT  * FROM [REDE$A1:H] Where NomeseuCampo='DEPOSITO'"
ou ainda na "gravação"
Código: Selecionar todos
While Not adoRecSet.EOF
if adorecset.fields(?)="DEPOSITO" then   'Substitua ? pelo numero do campo com o valor desejado
With Worksheets("Depositos")

' insere os dados importados na aba depositos
.Range("A" & i) = adoRecSet.Fields(0)
.Range("B" & i) = adoRecSet.Fields(1)
.Range("C" & i) = adoRecSet.Fields(2)
.Range("D" & i) = adoRecSet.Fields(3)
.Range("E" & i) = adoRecSet.Fields(4)
contaDados = contaDados + IIf(adoRecSet.Fields(0) <> "Nulo", 1, 0)
End With
end if
adoRecSet.MoveNext
i = i + 1....
#9377
ola meus caros,

primeiro agradeço ao nosso amigo @Reinaldo e novamente ao nosso amigo @Startec pela ajuda e atenção
OBS: re-upei os arquivos para que possam analisá-los

Basicamente o arquivo que nosso amigo @Startec passo acima. Porém, eu necessitava que o ADO fosse feito automaticamente e nao precisa-se selecioná-lo. necessito disso pois estou trabalhando em um sistema com Excel e Access

Sobre os códigos que nosso amigo @Reinaldo posso ,testei aqui como o exemplo abaixo e infelizmente nao funcionaram mais agradeço.

strSQL = "SELECT * FROM [REDE$A1:H] Where NOME DA VERBA='DEPOSITO RECURSAL'"

se puderem me ajudar com mais essa ficarei mt grato +D
#9386
Sobre os códigos que nosso amigo @Reinaldo posso ,testei aqui como o exemplo abaixo e infelizmente nao funcionaram mais agradeço.
strSQL = "SELECT * FROM [REDE$A1:H] Where NOME DA VERBA='DEPOSITO RECURSAL'"
Para este caso do seu campo "NOME DA VERBA" com palavra composta é necessario o uso de "[ ]" -> [NOME DA VERBA], para não gerar erros.
Basicamente o arquivo que nosso amigo @Startec passo acima. Porém, eu necessitava que o ADO fosse feito automaticamente e nao precisa-se selecioná-lo. necessito disso pois estou trabalhando em um sistema com Excel e Access
Para integrar o Excel ao Access, praaticamente muda-se pouca coisa ao referenciar o provedor, por exemplo:
Código: Selecionar todos
StrDB = ThisWorkbook.Path & "\SeuBd_Access.accdb"

strConnection = "Provider=Microsoft.ce.OLEDB.12.0;" & _
    "Data Source=" & StrDB 
Por favor, poste sua planilha ou um exemplo com alguns dados ficticios, para que possamos ajuda-lo .
#9448
Segue em anexo as planilhas

o ADODB com o codigo que nosso amigo @Startec me passou esta funcionando perfeitamente.

Mas, se reparar coloquei uma coluna a mais que é a nome da verba porem quando executo o ele vai trazer ele completa.

gostaria de fazer o filtro como ja foi citado anteriormente. para que todos que contiverem o status DEPOSITO RECURSAL na coluna NOME DA VERBA fossem enviados para a planilha RECURSAL e todos que contiverem o status DEPOSITO JUDICIAL fossem enviados para a planilha JUDICIAL.

Tudo automaticamente pois esse ADODB sera colocado em um projeto em que os usuários nao terão acesso para utilizar as planilhas somente acesso aos forms. alem de necessitar dessa divisão para realizar uma consulta que traz os dados para um forme.

Desde ja agradeço.
Att,
Cristopher.
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord