Olá,
Estou desenvolvendo um arquivo para um registro especifico do SPED, Sistema Publico de Escrituração Digital. Nele preciso enviar varias linhas com uma série de informações em acordo com layout previamente definido pela Receita Federal do Brasil. Abaixo no tópico 1 consta um exemplo do qual é o formato do arquivo que preciso gerar. Através do código disponibilizado pelo "AhTexeira", moderador neste forum, consegui gerar um arquivo com apenas uma consulta, todavia, preciso enviar as informações para o arquivo .txt de varias consultas. Abaixo consta o código o qual conseguir enviar, código 1, e após o código 2 o qual preciso modificar para gerar a informação que preciso.
Grato pela ajuda,
Estou desenvolvendo um arquivo para um registro especifico do SPED, Sistema Publico de Escrituração Digital. Nele preciso enviar varias linhas com uma série de informações em acordo com layout previamente definido pela Receita Federal do Brasil. Abaixo no tópico 1 consta um exemplo do qual é o formato do arquivo que preciso gerar. Através do código disponibilizado pelo "AhTexeira", moderador neste forum, consegui gerar um arquivo com apenas uma consulta, todavia, preciso enviar as informações para o arquivo .txt de varias consultas. Abaixo consta o código o qual conseguir enviar, código 1, e após o código 2 o qual preciso modificar para gerar a informação que preciso.
- Tópico 1:
- Código:
|G001|0|
|G110|01082016|31082016|9490|197,71|185099,44|185099,44|1|197,71|197,71|
|G125|MEBENZ|01082016|SI|7280||||39|151,67|
|G126|01052013|01052013|39|151,67|185099,44|185099,44|1|151,67|
|G125|CARFUR|01082016|SI|2210||||39|46,04|
|G126|01052013|01052013|39|46,04|185099,44|185099,44|1|46,04|
|G990|7|
- Código 1: Código em funcionamento, mas com a informação Incompleta, apenas uma consulta.
- Código:
Dim rst As Recordset, varRecCount As Integer, varCount As Integer
Dim varArq As String
Dim db As Database
Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG110 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
rst.MoveLast
varRecCount = rst.RecordCount
rst.MoveFirst
varArq = Application.CurrentProject.Path & "\ativoImobilizadoSpedFiscal.txt"
'Tenta abrir o arquivo em caso de erro GerenErro
Open varArq For Output As #1
For varCount = 1 To varRecCount
Print #1, "|" & Trim(rst!REG) & "|" & Trim(Format(rst!DT_INI, "ddmmyyyy")) & "|" & Trim(Format(rst!DT_FIN, "ddmmyyyy")) & "|" & Trim(rst!SALDO_IN_ICMS) & "|" & Trim(rst!SOM_PARC) & "|" & Trim(rst!VL_TRIB_EXP) & "|" & Trim(rst!VL_TOTAL) & "|" & Trim(Format(rst!IND_PER_SAI, "Fixed")) & "|" & Trim(Format(rst!ICMS_APROP, "Fixed")) & "|" & Trim(Format(rst!SOM_ICMS_OC, "Fixed")) & "|"
rst.MoveNext
Next varCount
Close #1
rst.Close
Set db = Nothing
MsgBox "Arquivo TXT foi criado em: " & varArq, vbInformation, "Atenção"
Exit Sub
End Sub
Function LPad_E(s, ByVal c As String, n As Integer) As String
If Len(c) = 0 Then c = ""
If n < 1 Then
LPad_E = ""
Else
LPad_E = Right$(String$(n, Left$(c, 1)) & s, n)
End If '
End Function
Function LPad_D(s, ByVal c As String, n As Integer) As String
If Len(c) = 0 Then c = " "
If n < 1 Then
LPad_D = "|"
Else
LPad_D = Left$(s & String$(n, Left$(c, 1)), n)
End If
End Function
- Código 2: Código com erro, mas com a informação completa, com várias consultas.
- Código:
Dim rst As Recordset, varRecCount As Integer, varCount As Integer
Dim varArq As String
Dim db As Database
Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG001 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG110 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG125 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG126 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG130 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG140 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
Set rst = db.OpenRecordset("SELECT * FROM cstAtivoImobilizadoCiapMovimentoMensalSpedFiscalG990 WHERE filial=" & Me.txtFilial.Value & " and numeroMes=" & Me.txtMes.Value & " and numeroAno=" & Me.txtAno.Value) 'se for consultas
rst.MoveLast
varRecCount = rst.RecordCount
rst.MoveFirst
varArq = Application.CurrentProject.Path & "\ativoImobilizadoSpedFiscal.txt"
'Tenta abrir o arquivo em caso de erro GerenErro
Open varArq For Output As #1
For varCount = 1 To varRecCount
Print #1, "|" & Trim(rst!REG) & "|" & Trim(rst!IND_MOV) & "|"
Print #1, "|" & Trim(rst!REG) & "|" & Trim(Format(rst!DT_INI, "ddmmyyyy")) & "|" & Trim(Format(rst!DT_FIN, "ddmmyyyy")) & "|" & Trim(rst!SALDO_IN_ICMS) & "|" & Trim(rst!SOM_PARC) & "|" & Trim(rst!VL_TRIB_EXP) & "|" & Trim(rst!VL_TOTAL) & "|" & Trim(Format(rst!IND_PER_SAI, "Fixed")) & "|" & Trim(Format(rst!ICMS_APROP, "Fixed")) & "|" & Trim(Format(rst!SOM_ICMS_OC, "Fixed")) & "|"
Print #1, "|" & Trim(rst!REG) & "|" & Trim(rst!COD_IND_BEM) & "|" & Trim(Format(rst!DT_MOV, "ddmmyyyy")) & "|" & Trim(rst!TIPO_MOV) & "|" & Trim(Format(rst!VL_IMOB_ICMS_OP, "Fixed")) & "|" & Trim(Format(rst!VL_IMOB_ICMS_ST, "Fixed")) & "|" & Trim(Format(rst!VL_IMOB_ICMS_FRT, "Fixed")) & "|" & Trim(Format(rst!VL_IMOB_ICMS_DIF, "Fixed")) & "|" & Trim(Format(rst!NUM_PARC, "Fixed")) & "|" & Trim(Format(rst!VL_PARC_PASS, "Fixed")) & "|"
Print #1, "|" & Trim(rst!REG) & "|" & Trim(Format(rst!DT_INI, "ddmmyyyy")) & "|" & Trim(Format(rst!DT_FIM, "ddmmyyyy")) & "|" & Trim(rst!NUM_PARC) & "|" & Trim(Format(rst!VL_PARC_PASS, "Fixed")) & "|" & Trim(Format(rst!VL_TRIB_OC, "Fixed")) & "|" & Trim(Format(rst!VL_TOTAL, "Fixed")) & "|" & Trim(Format(rst!IND_PER_SAI, "Fixed")) & "|" & Trim(Format(rst!VL_PARC_APROP, "Fixed")) & "|"
Print #1, "|" & Trim(rst!REG) & "|" & Trim(rst!IND_EMIT) & "|" & Trim(rst!COD_PART) & "|" & Trim(rst!COD_MOD) & "|" & Trim(rst!SERIE) & "|" & Trim(rst!NUM_DOC) & "|" & Trim(rst!CHV_NFE_CTE) & "|" & Trim(rst!DT_DOC) & "|"
Print #1, "|" & Trim(rst!REG) & "|" & Trim(rst!NUM_ITEM) & "|" & Trim(rst!COD_ITEM) & "|"
Print #1, "|" & Trim(rst!REG) & "|" & Trim(rst!QTD_LIN_G) & "|"
rst.MoveNext
Next varCount
Close #1
rst.Close
Set db = Nothing
MsgBox "Arquivo TXT foi criado em: " & varArq, vbInformation, "Atenção"
Exit Sub
End Sub
Function LPad_E(s, ByVal c As String, n As Integer) As String
If Len(c) = 0 Then c = ""
If n < 1 Then
LPad_E = ""
Else
LPad_E = Right$(String$(n, Left$(c, 1)) & s, n)
End If '
End Function
Function LPad_D(s, ByVal c As String, n As Integer) As String
If Len(c) = 0 Then c = " "
If n < 1 Then
LPad_D = "|"
Else
LPad_D = Left$(s & String$(n, Left$(c, 1)), n)
End If
End Function
Grato pela ajuda,