Jump to content
Fórum Script Brasil
  • 0

VB6 - Importar planilha Excel para o MDB Access


namon
 Share

Question

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

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------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

8-> 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??

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

Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.9k
    • Total Posts
      648.8k
×
×
  • Create New...