Bom dia a todos, sou novo por aqui e novo usuário de Access, tenho conhecimento apenas da linguagem VBA (excel).
Estou migrando as informações que teno no excel para o Access.
Tenho uma base de dados no Access e quero criar gráficos no excel. Porém não estou conseguindo copiar dados do Access para o excel sem repetir informações.
Anexo o arquivo para que possam entender a situação.
Tenho os filtros no excel (combobox), busco as informações na base de dados do Access, posteriormente levo a informação para o excel (aqui esta o problema).
Estou utilizando os seguintes códigos:
Para carregar o primeiro combobox do excel:
CODE:
Private Sub ConexaoCarregarCombo1() ' CC
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
' Abrir Conexão com o Access
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & ThisWorkbook.Path & "\Banco de Dados.mdb;"
cnn.Open
'Seleciona a Tabela / Campo que você quer listar
Set rst = New ADODB.Recordset
Set rst = cnn.Execute("SELECT CC FROM LISTA_CC ORDER BY CC")
' Add o item acima no Combobox
Do While Not rst.EOF
Sheets("QUADRO").ComboBox1.AddItem rst.Fields(0) & ""
rst.MoveNext
Loop
' Fecha Conexão
cnn.Close
End Sub
_____________________________________________________________________________________________________________________________
Para filtrar os dados no BD Access:
CODE:
Public Sub FiltroCBX_CC(CC As String)
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
' Abrir Conexão com o Access
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\Banco de Dados.mdb;"
cnn.Open
'Seleciona a Tabela / Campo que você quer listar
Set rst = New ADODB.Recordset
Set rst = cnn.Execute("SELECT TIPO, EMPRESA, CC, DESC_CC, GRUPO1, MÊS, SUM(VALOR) AS VALOR" & _
" FROM BASE WHERE CC = '" & CC & "' GROUP BY TIPO, EMPRESA, CC, DESC_CC, GRUPO1, MÊS") 'filtro é aqui
Sheets("DADOS_GRAFICO").Range("A2:G450000").ClearContents
' Add o item acima no Combobox
Dim i As Double
i = 2
Do While Not rst.EOF
Sheets("DADOS_GRAFICO").Cells(i, 1) = rst.Fields(0)
Sheets("DADOS_GRAFICO").Cells(i, 2) = rst.Fields(1)
Sheets("DADOS_GRAFICO").Cells(i, 3) = rst.Fields(2)
Sheets("DADOS_GRAFICO").Cells(i, 4) = rst.Fields(3)
Sheets("DADOS_GRAFICO").Cells(i, 5) = rst.Fields(4)
Sheets("DADOS_GRAFICO").Cells(i, 6) = rst.Fields(5)
Sheets("DADOS_GRAFICO").Cells(i, 7) = rst.Fields(6)
i = i + 1
rst.MoveNext
Loop
' Fecha Conexão
cnn.Close
Call ConexaoCarregarCombo2
End Sub
______________________________________________________________________________________________________________________
O que eu gostaria é algo simples, porém não estou sabendo fazer devido não conhecer a linguagem. Quero apenas levar por exemplo:
Os meses de Janeiro a dezembro sem repetir em uma coluna do excel, e os valores Realizado e Orçado em colunas diferentes ao lado dos meses.
Muito obrigado, espero que possam me ajudar.
Abraços
Estou migrando as informações que teno no excel para o Access.
Tenho uma base de dados no Access e quero criar gráficos no excel. Porém não estou conseguindo copiar dados do Access para o excel sem repetir informações.
Anexo o arquivo para que possam entender a situação.
Tenho os filtros no excel (combobox), busco as informações na base de dados do Access, posteriormente levo a informação para o excel (aqui esta o problema).
Estou utilizando os seguintes códigos:
Para carregar o primeiro combobox do excel:
CODE:
Private Sub ConexaoCarregarCombo1() ' CC
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
' Abrir Conexão com o Access
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & ThisWorkbook.Path & "\Banco de Dados.mdb;"
cnn.Open
'Seleciona a Tabela / Campo que você quer listar
Set rst = New ADODB.Recordset
Set rst = cnn.Execute("SELECT CC FROM LISTA_CC ORDER BY CC")
' Add o item acima no Combobox
Do While Not rst.EOF
Sheets("QUADRO").ComboBox1.AddItem rst.Fields(0) & ""
rst.MoveNext
Loop
' Fecha Conexão
cnn.Close
End Sub
_____________________________________________________________________________________________________________________________
Para filtrar os dados no BD Access:
CODE:
Public Sub FiltroCBX_CC(CC As String)
Dim cnn As New ADODB.Connection
Dim rst As ADODB.Recordset
Dim sql As String
' Abrir Conexão com o Access
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & ThisWorkbook.Path & "\Banco de Dados.mdb;"
cnn.Open
'Seleciona a Tabela / Campo que você quer listar
Set rst = New ADODB.Recordset
Set rst = cnn.Execute("SELECT TIPO, EMPRESA, CC, DESC_CC, GRUPO1, MÊS, SUM(VALOR) AS VALOR" & _
" FROM BASE WHERE CC = '" & CC & "' GROUP BY TIPO, EMPRESA, CC, DESC_CC, GRUPO1, MÊS") 'filtro é aqui
Sheets("DADOS_GRAFICO").Range("A2:G450000").ClearContents
' Add o item acima no Combobox
Dim i As Double
i = 2
Do While Not rst.EOF
Sheets("DADOS_GRAFICO").Cells(i, 1) = rst.Fields(0)
Sheets("DADOS_GRAFICO").Cells(i, 2) = rst.Fields(1)
Sheets("DADOS_GRAFICO").Cells(i, 3) = rst.Fields(2)
Sheets("DADOS_GRAFICO").Cells(i, 4) = rst.Fields(3)
Sheets("DADOS_GRAFICO").Cells(i, 5) = rst.Fields(4)
Sheets("DADOS_GRAFICO").Cells(i, 6) = rst.Fields(5)
Sheets("DADOS_GRAFICO").Cells(i, 7) = rst.Fields(6)
i = i + 1
rst.MoveNext
Loop
' Fecha Conexão
cnn.Close
Call ConexaoCarregarCombo2
End Sub
______________________________________________________________________________________________________________________
O que eu gostaria é algo simples, porém não estou sabendo fazer devido não conhecer a linguagem. Quero apenas levar por exemplo:
Os meses de Janeiro a dezembro sem repetir em uma coluna do excel, e os valores Realizado e Orçado em colunas diferentes ao lado dos meses.
Muito obrigado, espero que possam me ajudar.
Abraços