Edcronos 30/6/2015, 18:53
desculpe é que sou meio afobado
eu comecei com access no mesmo dia do meu cadastro e levei um susto das diferenças para o excel
meu office é o 2010 32b
win7 64b
o meu projeto é generico portanto estou usando qualquer coisa que possa servir de base, "lista de cep, resultado de loterias,..."
oq já consegui fazer
abrir arquivo accdb de uma pasta
importar uma tabela especifica para um array
já consegui listar os nomes de tabelas
estou começando a escrever o codigo para escolher a tabela que quer importar para o excel
- Código:
Sub Macro2()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, rsTab As ADODB.Recordset, coluno()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Application.EnableEvents = False
Application.ScreenUpdating = False
prov1 = "Provider=Microsoft.ACE.OLEDB.12.0;" ' para .accdb
LocArq = "D:\TABELAS\"
N_Aquiv = "tabelaA.accdb"
Aquiv = "Data Source=" & LocArq & N_Aquiv & ";"
tabela = "teste2"
prov = prov1
cn.Open prov & Aquiv
Set rsTab = cn.OpenSchema(adSchemaTables)
While Not rsTab.EOF
NTab = rsTab!TABLE_NAME
If Not (NTab Like "MSys*" Or NTab Like "~*") Then NtabList = NTab & "|"
rsTab.MoveNext
Wend
rs.Open tabela, cn
For C = 0 To rs.Fields.Count - 2 'varre nomes de colunas
Cells(1, C + 1).value = rs.Fields(C).Name
Next
coluno = rs.GetRows: Call FSD(coluno)
Range(Cells(2, 1), Cells(UBound(coluno, 1) + 1, UBound(coluno, 2))).Value2 = coluno
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Sub FSD(ByRef Nome_Array)
l1 = UBound(Nome_Array, 1): c1 = UBound(Nome_Array, 2)
Dim ColunD()
ReDim ColunD(1 To c1, 1 To l1)
C2 = 1: l2 = 1
For l = 1 To l1
For C = 1 To c1
ColunD(l2, C2) = Nome_Array(l, C)
l2 = l2 + 1
Next
l2 = 1: C2 = C2 + 1
Next
Nome_Array = ColunD
End Sub
Última edição por Edcronos em 30/6/2015, 19:20, editado 2 vez(es)