IMPORTAR PLANILHA EXCEL 97/2000 VIA VB6

NAMON 14/07/2012 18:48:52
#406101
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
FILMAN 16/07/2012 15:44:24
#406195
Resposta escolhida
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
NAMON 16/07/2012 19:04:08
#406211
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

NAMON 20/07/2012 18:58:17
#406373
A tabela CredDeb ainda possui o campo data_atz
FILMAN 04/08/2012 14:29:10
#407197
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
NAMON 04/08/2012 16:02:22
#407201
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
NAMON 11/08/2012 14:47:13
#407773
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
Tópico encerrado , respostas não são mais permitidas