IMPORTAR PLANILHA EXCEL 97/2000 VIA VB6
Boa noite parceitos!
Para importar uma planilha excel para MDB via código, posso utilizar o código abaixo:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub cmdexecuta_Click()
Dim rsdados As Recordset
Dim x As Object
Dim linha As Integer
Dim strvalor_A As String, strvalor_B As Integer, strvalor_C As String
Set x = CreateObject([Ô]Excel.Application.8[Ô]) [ô]para o office 97/2000
x.Workbooks.Open(App.Path & [Ô]\Clientes.xls[Ô]
x.Sheets([Ô]Clientes[Ô]).Select
x.Visible = False
For linha = 2 To 10 [ô]65536 e o valor maximo
strvalor_A = x.rows(linha).cells(1).Value [ô]campo1
strvalor_B = x.rows(linha).cells(2).Value [ô]campo2
strvalor_C = x.rows(linha).cells(3).Value [ô]campo3
If strvalor_A = [Ô]FLAG[Ô] Then
Exit For
Else
sSQl = [Ô]INSERT INTO TabelaClientes (campo1 ,campo2 , campo3 )[Ô]
sSQl = sSQl & [Ô] VALUES ( [ô][Ô] & strvalor_A & [Ô][ô], [ô][Ô] & strvalor_B & [Ô][ô] ,[ô][Ô] & strvalor_C & [Ô][ô] ) [Ô]
Set rsdados = db.Execute(sSQl)
End If
Next
x.ActiveWorkbook.Close
x.quit
[ô]Abro um modulo colocando o seguinte codigo
Option Explicit
Public db As ADODB.Connection
Sub AbreBanco()
Dim sPath As String
Set db = New ADODB.Connection
sPath = App.Path & [Ô]\dados.mdb[Ô]
db.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & sPath
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-> Nova versão, pois a anterior continua erros
No entanto a planilha que preciso importar contém dados em várias linhas para um mesmo cliente, a saber:
Cabeçalho
Nome cliente(A1) CodCli (B1) valor_a(C1) valor_b(D1) valor_c(E1) valor_d(F1) totalgeral(G1)
cliente1 (A2) 100005(B2) 0,00(C2) 0,00(D2) 1200,00(E2) 0,00(F2) 1442,00(G2)
cliente1 (A3) 100005(B3) 0,00(C3) 0,00(D3) 0,00(E3) 0,00(F3) 0,00(G3)
cliente1 (A4) 100005(B4) 70,00(C4) 0,00(D4) 0,00(E4) 0,00(F4) 0,00(G4)
cliente1 (A5) 100005(B5) 0,00(C5) 52,00(D5) 0,00(E5) 0,00(F5) 0,00(G5)
cliente1 (A6) 100005(B6) 0,00(C6) 0,00(D6) 0,00(E6) 120,00(F6) 0,00(G6)
cliente2 (A7) 190032(B7) 0,00(C7) 97,70(D7) 0,00(E7) 0,00(F7) 487,70(G7)
cliente2 (A8) 190032(B8) 315,00(C8) 0,00(D8) 0,00(E8) 0,00(F8) 0,00(G8)
cliente2 (A9) 190032(B9) 0,00(C9) 0,00(D9) 0,00(E9) 75,00(F9) 0,00(G9)
cliente3(A10)... e assim sucessivamente
-> A soma de todos os valores de cada cliente fica somente na Célua G(x), primeira linha de cada cliente
-> a quantidade de cada cliente varia conforme os valores que possui em carteira, no máximo de 5 linhas/cliente
No exemplo acima: o cliente1 possui 5 linhas; já o cliente2 possui 3 linhas apenas
Preciso que a rotina importe uma linha para cada cliente, somando TODOS os valores por cliente:
cliente1 (A2) 100005(B2) 70,00(C2) 52,00(D2) 1200,00(E2) 120,00(F2) 1442,00(G2)
cliente2 (A7) 190032(B7) 315,00(C7) 97,70(D7) 0,00(E7) 75,00(F7) 487,70(G7)
é possÃvel via código no VB6??
Enéa Monteiro
Para importar uma planilha excel para MDB via código, posso utilizar o código abaixo:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Private Sub cmdexecuta_Click()
Dim rsdados As Recordset
Dim x As Object
Dim linha As Integer
Dim strvalor_A As String, strvalor_B As Integer, strvalor_C As String
Set x = CreateObject([Ô]Excel.Application.8[Ô]) [ô]para o office 97/2000
x.Workbooks.Open(App.Path & [Ô]\Clientes.xls[Ô]
x.Sheets([Ô]Clientes[Ô]).Select
x.Visible = False
For linha = 2 To 10 [ô]65536 e o valor maximo
strvalor_A = x.rows(linha).cells(1).Value [ô]campo1
strvalor_B = x.rows(linha).cells(2).Value [ô]campo2
strvalor_C = x.rows(linha).cells(3).Value [ô]campo3
If strvalor_A = [Ô]FLAG[Ô] Then
Exit For
Else
sSQl = [Ô]INSERT INTO TabelaClientes (campo1 ,campo2 , campo3 )[Ô]
sSQl = sSQl & [Ô] VALUES ( [ô][Ô] & strvalor_A & [Ô][ô], [ô][Ô] & strvalor_B & [Ô][ô] ,[ô][Ô] & strvalor_C & [Ô][ô] ) [Ô]
Set rsdados = db.Execute(sSQl)
End If
Next
x.ActiveWorkbook.Close
x.quit
[ô]Abro um modulo colocando o seguinte codigo
Option Explicit
Public db As ADODB.Connection
Sub AbreBanco()
Dim sPath As String
Set db = New ADODB.Connection
sPath = App.Path & [Ô]\dados.mdb[Ô]
db.Open [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & sPath
End Sub
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-> Nova versão, pois a anterior continua erros
No entanto a planilha que preciso importar contém dados em várias linhas para um mesmo cliente, a saber:
Cabeçalho
Nome cliente(A1) CodCli (B1) valor_a(C1) valor_b(D1) valor_c(E1) valor_d(F1) totalgeral(G1)
cliente1 (A2) 100005(B2) 0,00(C2) 0,00(D2) 1200,00(E2) 0,00(F2) 1442,00(G2)
cliente1 (A3) 100005(B3) 0,00(C3) 0,00(D3) 0,00(E3) 0,00(F3) 0,00(G3)
cliente1 (A4) 100005(B4) 70,00(C4) 0,00(D4) 0,00(E4) 0,00(F4) 0,00(G4)
cliente1 (A5) 100005(B5) 0,00(C5) 52,00(D5) 0,00(E5) 0,00(F5) 0,00(G5)
cliente1 (A6) 100005(B6) 0,00(C6) 0,00(D6) 0,00(E6) 120,00(F6) 0,00(G6)
cliente2 (A7) 190032(B7) 0,00(C7) 97,70(D7) 0,00(E7) 0,00(F7) 487,70(G7)
cliente2 (A8) 190032(B8) 315,00(C8) 0,00(D8) 0,00(E8) 0,00(F8) 0,00(G8)
cliente2 (A9) 190032(B9) 0,00(C9) 0,00(D9) 0,00(E9) 75,00(F9) 0,00(G9)
cliente3(A10)... e assim sucessivamente
-> A soma de todos os valores de cada cliente fica somente na Célua G(x), primeira linha de cada cliente
-> a quantidade de cada cliente varia conforme os valores que possui em carteira, no máximo de 5 linhas/cliente
No exemplo acima: o cliente1 possui 5 linhas; já o cliente2 possui 3 linhas apenas
Preciso que a rotina importe uma linha para cada cliente, somando TODOS os valores por cliente:
cliente1 (A2) 100005(B2) 70,00(C2) 52,00(D2) 1200,00(E2) 120,00(F2) 1442,00(G2)
cliente2 (A7) 190032(B7) 315,00(C7) 97,70(D7) 0,00(E7) 75,00(F7) 487,70(G7)
é possÃvel via código no VB6??
Enéa Monteiro
Sim é possÃvel, mas deixe-me ver se entendi vc gostaria de agrupar as linhas de cada cliente e colocar na tabela?
Como ficou a estrutura da sua tabela?
se possÃvel mande essa planilha para que possamos ver como realmente ela se encontra
Como ficou a estrutura da sua tabela?
se possÃvel mande essa planilha para que possamos ver como realmente ela se encontra
Obrigado Filman pelo retorno!
Estou anexando a planilha original (com apenas parte dos registros, pois são mais de 1500 registtros) que recebo mensalmente, a não ser os nomes dos clientes que são aleatórios.
Quanto à tabela do MDB no VB6, chama-se CredDeb com a seguinte estrutura:
Tabela: CredDeb
Indices: Cod_cliente - Primário
Nome_cliente
Campos: Cod_cliente Texto/8
Nome_cliente Texto/70
Credito1 Dupla/10
Credito2 Dupla/10
Credito3 Dupla/10
Credito3 Dupla/10
Credito4 Dupla/10
Credito5 Dupla/10
Cregeral Dupla/10
Enéa Monteiro
Estou anexando a planilha original (com apenas parte dos registros, pois são mais de 1500 registtros) que recebo mensalmente, a não ser os nomes dos clientes que são aleatórios.
Quanto à tabela do MDB no VB6, chama-se CredDeb com a seguinte estrutura:
Tabela: CredDeb
Indices: Cod_cliente - Primário
Nome_cliente
Campos: Cod_cliente Texto/8
Nome_cliente Texto/70
Credito1 Dupla/10
Credito2 Dupla/10
Credito3 Dupla/10
Credito3 Dupla/10
Credito4 Dupla/10
Credito5 Dupla/10
Cregeral Dupla/10
Enéa Monteiro
A tabela CredDeb ainda possui o campo data_atz
Cara, foi mal ter demorado pra te ajudar
Mais segue anexo os arquivos ja da pra você ter uma noção
A maneira que estruturei ficou mais ou menos o importante é que você controle as datas pois assim vai evitar duplicação de valores
VLW
Qualquer coisa posta ai
Mais segue anexo os arquivos ja da pra você ter uma noção
A maneira que estruturei ficou mais ou menos o importante é que você controle as datas pois assim vai evitar duplicação de valores
VLW
Qualquer coisa posta ai
Filman, nada disso de demora! Claro que sabemos que tantas outras coisas para se fazer e cada uma a seu tempo! Estou baixando o anexo e vou testar no sistema com uma planilha que recebi ontem (ref. mês de julho) e posto aqui o resultado. Vou fechar o tópico depois. Obrigado antecipadamente por sua disposição em me ajudar!
Enéa
Enéa
Filman, boa tarde!
Ficou 10 a rotina! Caiu como uma luva no meu sistema.
Obrigado pelo despreendimento em ajudar e mais uma vez, FICOU 10!
Agradecido
Enéa Monteiro
namon@uai.com.br
Ficou 10 a rotina! Caiu como uma luva no meu sistema.
Obrigado pelo despreendimento em ajudar e mais uma vez, FICOU 10!
Agradecido
Enéa Monteiro
namon@uai.com.br
Tópico encerrado , respostas não são mais permitidas