MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação

    avatar
    FabioGO
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 124
    Registrado : 22/08/2012

    [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação Empty [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação

    Mensagem  FabioGO 7/3/2017, 12:49

    Bom dia.
    Ja acompanho o forum a muito tempo, me salvou em varios momentos que precisei somente consultando.
    Agora chegou a hora de tentar tirar uma duvida que não consegui resolver.

    A finalidade que pretendo com o código é pegar o recordsource do formulario access e atualizar uma planilha do excel, comparando os valores que ja estão em determindas células com valores de campos do recordsource do formulario. Se forem iguais, atualizar a célula no excel com o valor do campo correspondente da comparação.

    O código abaixo está fazendo isso, mas só faz a comparação e o update no primeiro registro do recordsource do access, ou seja, somente uma linha na planilha do excel é atualizada.
    O código está em um botão que ao clicar faria a ação desejada de atualizar a planilha do excel.

    usando access 2010

    ilustrando o problema:

    No form continuo eu tenho:na planilha excel eu tenho: o que o código esta fazendo:  o que eu quero que faça:
    [Competência]  [Valor]
    01/01/2017      100,00 B14 = 01 C14=2017 D14= VazioB14 = 01 C14=2017 D14= 100,00B14 = 01 C14=2017 D14= 100,00
    01/12/2016      90,00 B15 = 12 C15=2016 D15= VazioB15 = 12 C15=2016 D15= VazioB15 = 12 C15=2016 D15= 90,00
    01/11/2016      80,00  B16 = 11 C16=2016 D16= VazioB16 = 11 C16=2016 D16= VazioB16 = 11 C16=2016 D16= 80,00
    Código:
    Dim B, C, D As String
    Dim rs As Recordset

    Set rs = CurrentDb.OpenRecordset(Me.RecordSource)
    Set objExcel = CreateObject("Excel.application")
                
        objExcel.Visible = False

            With objExcel
                .Workbooks.Open ("\\PastaCompartilhada\PlanilhaExcel.xls")
                .selection.currentregion.Select
                
            Do While Not rs.EOF
                
                For i = 14 To 331
                
                B = "B" & i
                C = "C" & i
                D = "D" & i
                    
                    .Range(B).Select
                    .Range(C).Select
                    .Range(D).Select
                                                        
                    If Month([Competência]) = .Range(B) And Year([Competência]) = .Range(C) Then
                       .Range(D) = [Valor]
                    End If
                
                rs.MoveNext
                                
                Next
                                    
            Loop
                
                .Workbooks(1).Close savechanges:=True
                .Quit
                                
            End With
                    
    Set objExcel = Nothing
    Set rs = Nothing


    Última edição por FabioGO em 23/3/2017, 13:37, editado 1 vez(es)
    avatar
    FabioGO
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 124
    Registrado : 22/08/2012

    [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação Empty Re: [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação

    Mensagem  FabioGO 9/3/2017, 11:55

    Ninguem tem uma ideia, ou até mesmo sugestão para fazer de outra forma?
    avatar
    FabioGO
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 124
    Registrado : 22/08/2012

    [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação Empty [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação

    Mensagem  FabioGO 9/3/2017, 17:56

    Respondendo a mim mesmo, fiz alterações e o código passou a fazer o que preciso, porem bem demorado o procedimento, mas em todo caso está resolvido,

    Segue o código para caso alguem queira algo parecido
    é só criar um botão de comando e por o código

    Código:
    Private Sub btnCriar_Click()

    Dim B, C, D As String
    Dim rs As DAO.Recordset
    Dim db As DAO.Database

    Set db = CurrentDb()
    Set rs = db.OpenRecordset(Me.RecordSource) 'base de dados atual do formulário
    Set objExcel = CreateObject("Excel.application")
                
        objExcel.Visible = False

            With objExcel
                .Workbooks.Open ("\\PastaCompartilhada\PlanilhaExcel.xls") 'caminho do endereço da planilha a ser atualizada
                .selection.currentregion.Select
            
            Do While Not rs.EOF 'enquanto não encontra o final da consulta
                                
                For i = 14 To 331 'limites da planilha do excel
                                        
                B = "B" & i    '-|
                C = "C" & i    ' | - configurando quais células atualizar
                D = "D" & i    '-|
                    
                    .Range(B).Select
                    .Range(C).Select
                    .Range(D).Select
                                                                                
                    If Month(rs![Competência]) = .Range(B) And Year(rs![Competência]) = .Range(C) Then ' comparando os valores das células da planilha
                       .Range(D) = rs![Valor]                                                                                    ' excel com os valores dos campos na base de dados
                    End If
                    
                'essa msgbox eu coloquei para verificar linha por linha se o código estava funcionando, então ela não é necessária no código
                'MsgBox "Mes: " & Month(rs![Competência]) & "     Ano: " & Year(rs![Competência]) & "    Valor: " & rs![Valor] & vbCrLf & "Mes: " & .Range(B) & "     Ano: " & .Range(C) & "     Valor: " & .Range(D)
                                                    
                Next
                
            rs.MoveNext
            
            Loop
                                
                .Workbooks(1).Close savechanges:=True
                .Quit
                                
            End With
                    
    Set objExcel = Nothing
    Set rs = Nothing

    End Sub

    Conteúdo patrocinado


    [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação Empty Re: [Resolvido]Fazer update no excel a partir de RecordSource de form com clausula de comparação

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 20:19