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:
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= Vazio | B14 = 01 C14=2017 D14= 100,00 | B14 = 01 C14=2017 D14= 100,00 |
01/12/2016 90,00 | B15 = 12 C15=2016 D15= Vazio | B15 = 12 C15=2016 D15= Vazio | B15 = 12 C15=2016 D15= 90,00 |
01/11/2016 80,00 | B16 = 11 C16=2016 D16= Vazio | B16 = 11 C16=2016 D16= Vazio | B16 = 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)