Postada em 10/12/2007 08:18 hs
Claro, bom dia !!!
Abaixo coloquei o código que uso para passar os dados do banco de dados para o excel, esses dados são colocados em uma planilha já previamente montada, ou seja, criei uma planilha no Excel, formatei do jeito que queria, coloquei logotipo etc e com esses comandos apenas preencho a planilha com os dados
Espero poder ter te ajudado, qualquer coisa posta ai, ok ?!
Abraço Private Sub Command1_Click() On Error Resume Next 'variáveis para soma de horas Dim tempo As Long Dim min As Long, hora As Long Dim matriz Dim matriz2 Dim TotalMin, TotalHoras Dim Linha As Double Dim Horas As Date Horas = "00:00" TotalMin = 0 TotalHoras = 0 Screen.MousePointer = 11 'Carregar o Excel: Set Planilha = CreateObject("Excel.Application") Set PlanilhaExistente = Planilha.Workbooks.Open(App.Path & "pasta2.xls") ' chama a planilha existente Set NomePlanilha = Planilha.Worksheets("Plan1") ' a plan que ira receber os dados 'valores nas células Data1.DatabaseName = App.Path & "compras.mdb" Data1.RecordSource = "select * from apontamento where nome='" & CboNome.Text & "' and datalancamento between #" & Format(TxtInicial.Text, "mm/dd/yyyy") & "# and #" & Format(TxtFinal.Text, "mm/dd/yyyy") & "# order by pspf,datalancamento desc" Linha = 5 PsPf = 0 Data1.Refresh Data1.Recordset.MoveMin While Not Data1.Recordset.EOF 'por existir dias que não serão lançados, ou por serem feriados, finais de semana 'ou mesmo por não ter 31 dias, foi colocado esse rotina para posicionar o dia correto If Data1.Recordset!Dia = "01" Then coluna = 13 If Data1.Recordset!Dia = "02" Then coluna = 14 If Data1.Recordset!Dia = "03" Then coluna = 15 If Data1.Recordset!Dia = "04" Then coluna = 16 If Data1.Recordset!Dia = "05" Then coluna = 17 If Data1.Recordset!Dia = "06" Then coluna = 18 If Data1.Recordset!Dia = "07" Then coluna = 19 If Data1.Recordset!Dia = "08" Then coluna = 20 If Data1.Recordset!Dia = "09" Then coluna = 21 If Data1.Recordset!Dia = "10" Then coluna = 22 If Data1.Recordset!Dia = "11" Then coluna = 23 If Data1.Recordset!Dia = "12" Then coluna = 24 If Data1.Recordset!Dia = "13" Then coluna = 25 If Data1.Recordset!Dia = "14" Then coluna = 26 If Data1.Recordset!Dia = "15" Then coluna = 27 If Data1.Recordset!Dia = "16" Then coluna = 28 If Data1.Recordset!Dia = "17" Then coluna = 29 If Data1.Recordset!Dia = "18" Then coluna = 30 If Data1.Recordset!Dia = "19" Then coluna = 31 If Data1.Recordset!Dia = "20" Then coluna = 32 If Data1.Recordset!Dia = "21" Then coluna = 2 If Data1.Recordset!Dia = "22" Then coluna = 3 If Data1.Recordset!Dia = "23" Then coluna = 4 If Data1.Recordset!Dia = "24" Then coluna = 5 If Data1.Recordset!Dia = "25" Then coluna = 6 If Data1.Recordset!Dia = "26" Then coluna = 7 If Data1.Recordset!Dia = "27" Then coluna = 8 If Data1.Recordset!Dia = "28" Then coluna = 9 If Data1.Recordset!Dia = "29" Then coluna = 10 If Data1.Recordset!Dia = "30" Then coluna = 11 If Data1.Recordset!Dia = "31" Then coluna = 12 If PsPf = 0 Then PsPf = Data1.Recordset!PsPf Else If PsPf <> Data1.Recordset!PsPf Then If TotalMin <= 9 Then TotalMin = Format(TotalMin, "0#") If TotalHoras <= 9 Then TotalHoras = Format(TotalHoras, "0#") TotalHoras = TotalHoras & ":" & TotalMin NomePlanilha.Cells(Linha, 33).value = TotalHoras Linha = Linha + 1 PsPf = Data1.Recordset!PsPf TotalMin = 0 TotalHoras = 0 End If End If NomePlanilha.Cells(Linha, 1).value = PsPf NomePlanilha.Cells(Linha, coluna).value = Data1.Recordset!Horas 'se tivesse mais horas, poderia colocar dentro do array, separado 'por vírgula e entre aspas matriz = Array(Data1.Recordset!Horas) tempo = 0 'o For ,caso tenha mais horas ele parte para a próxima For I = 0 To UBound(matriz) matriz2 = Split(matriz(I), ",") 'nesse caso ele dividiu a hora em duas partes, pois ele achou a , tempo = tempo + (CLng(matriz2(0)) * 3600) 'retira a hora e transforma em nº tempo = tempo + (CLng(matriz2(1)) * 60) 'retira os minutos e transforma em nº Next tempo = tempo / 60 'Tempo = total em segundos min = tempo Mod 60 hora = Val(tempo / 60) 'O val está pegando o número inteiro, já que os minutos já foram calculados TotalMin = TotalMin + min If TotalMin > 59 Then TotalMin = TotalMin - 60 TotalHoras = TotalHoras + 1 End If
TotalHoras = TotalHoras + hora TotalMinGeral = TotalMinGeral + min Data1.Recordset.MoveNext Wend 'exibe o último cálculo If TotalMin <= 9 Then TotalMin = Format(TotalMin, "0#") If TotalHoras <= 9 Then TotalHoras = Format(TotalHoras, "0#") TotalHoras = TotalHoras & ":" & TotalMin NomePlanilha.Cells(Linha, 33).value = TotalHoras Data1.RecordSource = "select * from pspf order by Npfps" Data1.Refresh Data1.Recordset.MoveMin Linha = 32 While Not Data1.Recordset.EOF If Data1.Recordset!Status = "Edição" Then NomePlanilha.Cells(Linha, 10).value = Data1.Recordset!npfps NomePlanilha.Cells(Linha, 13).value = Data1.Recordset!Descricao1 NomePlanilha.Cells(Linha, 25).value = Data1.Recordset!Cliente Linha = Linha + 1 End If Data1.Recordset.MoveNext Wend NomePlanilha.Cells(31, 2).value = CboNome.Text NomePlanilha.Cells(32, 2).value = CDate(TxtInicial.Text) & " " & CDate(TxtFinal.Text) NomePlanilha.Cells(36, 2).value = "_________________________________" Planilha.Visible = True Screen.MousePointer = 0 Set Planilha = Nothing Set PlanilhaExistente = Nothing Set NomePlanilha = Nothing End Sub
Abraço e que DEUS te abençõe, espero poder ter te ajudado Eu sou o Senhor, o DEUS de vocês; eu os seguro pela mão e lhes digo; Não fiquem com medo, pois eu os ajudo Isaias 41:13
|