Tópico dívidido, origem: https://www.maximoaccess.com/t22789-exportar-tabela-para-txt
Boa tarde Teixeira,
Teixeira utilizei teu exemplo e funcionou perfeitamente. Entretanto estou diante de uma situação diferente e preciso adapta-lo. Preciso gerar um arquivo txt para um dos registros do Sped Fiscal e o formato do arquivo a ser exportado esta no primeiro exemplo abaixo. São duas as dificuldades, a primeira não consegui formatar o exemplo disponibilizado por te para que os campos não possuíssem valor padrão, "TamanhoD(rst!reg, 0)", o que preciso é ao gerar o arquivo txt, ele encontre exatamente os dados que constam na consulta, sem definir o valor previamente. A segunda dificuldade esta em uma das células chamadas "dataEmissao" nela o padrão gerado pelo arquivo é o 00/00/0000, mas o padrão exigido é sem as barras 00000000, nesta ultima dificuldade alterei a consulta para informar os valores no padrão exigido, contudo não funcionou. Peço - lhe a gentileza de uma ajuda neste caso. Para melhor visualização apontei a diferença das datas nos dois arquivos.
1. Padrão do arquivo o qual preciso gerar:
2. O arquivo modificado:
3. O script modificado:
Grato,
Boa tarde Teixeira,
Teixeira utilizei teu exemplo e funcionou perfeitamente. Entretanto estou diante de uma situação diferente e preciso adapta-lo. Preciso gerar um arquivo txt para um dos registros do Sped Fiscal e o formato do arquivo a ser exportado esta no primeiro exemplo abaixo. São duas as dificuldades, a primeira não consegui formatar o exemplo disponibilizado por te para que os campos não possuíssem valor padrão, "TamanhoD(rst!reg, 0)", o que preciso é ao gerar o arquivo txt, ele encontre exatamente os dados que constam na consulta, sem definir o valor previamente. A segunda dificuldade esta em uma das células chamadas "dataEmissao" nela o padrão gerado pelo arquivo é o 00/00/0000, mas o padrão exigido é sem as barras 00000000, nesta ultima dificuldade alterei a consulta para informar os valores no padrão exigido, contudo não funcionou. Peço - lhe a gentileza de uma ajuda neste caso. Para melhor visualização apontei a diferença das datas nos dois arquivos.
1. Padrão do arquivo o qual preciso gerar:
- Código:
|E113|3310|55|||126687|27052016|7897451468632|63,42|
|E113|3310|55|||126687|27052016|7897451466973|20,72|
|E113|3310|55|||126687|27052016|7897451465983|16,80|
|E113|3310|55|||126687|27052016|7897451465990|19,88|
|E113|3310|55|||126687|27052016|7897451469738|19,88|
|E113|3310|55|||126687|27052016|7897451468649|20,72|
|E113|3310|55|||126687|27052016|7897451468793|14,84|
2. O arquivo modificado:
- Código:
|E113|1523|55|1 |1 |123 |01/10/20| 1| 60|11111111111111111111111111111111111111111111|
3. O script modificado:
- Código:
Private Sub btnGerarTxt_Click()
Dim rst As Recordset, varRecCount As Integer, varCount As Integer
Dim varArq As String
Dim DB As Database
'Set DB = OpenDatabase(CurrentProject.Path & "\Gestor_be.accdb", False, False)
'Set DB = OpenDatabase("\Gestor_be.accdb")
Set DB = CurrentDb()
'Set rst = DB.OpenRecordset("tblNotaFiscalIcmsAntecipacaoParcialSpedFiscal", dbOpenTable) 'se for tabelas
Set rst = DB.OpenRecordset("SELECT * FROM cstNotaFiscalIcmsAntecipacaoParcialSpedFiscal WHERE filial=" & Me.txtfilial.Value & " and mes=" & Me.txtMes.Value & " and ano=" & Me.txtAno.Value) 'se for consultas
'Set rst = DB.OpenRecordset("SELECT * FROM cstNotaFiscalIcmsAntecipacaoParcialSpedFiscal WHERE filial=" & Me.txtfilial.Value) 'se for consultas
rst.MoveLast
varRecCount = rst.RecordCount
rst.MoveFirst
varArq = Application.CurrentProject.Path & "\icmsantecipacaoparcial.txt"
'Tenta abrir o arquivo em caso de erro GerenErro
Open varArq For Output As #1
For varCount = 1 To varRecCount
Print #1, TamanhoD(rst!reg, 0) & TamanhoD(rst!reg, 4) & TamanhoD(rst!codigoInternoColaborador, 4) & TamanhoD(rst!Modelo, 2) & TamanhoD(rst!serie, 4) & TamanhoD(rst!subserie, 3) & TamanhoD(rst!numeroNotaFiscal, 9) & TamanhoD(rst!dataEmissao, & TamanhoE(rst!codigoProduto, 60) & TamanhoE(rst!icmsAntecipacaoParcialRecolher, 10) & TamanhoE(rst!chaveDocumento, 44) '& TamanhoE(rst!chaveDocumento, 0) & TamanhoE(rst!chaveDocumento, 0)
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
Function TamanhoD(ByVal c As String, n As Integer) As String
If Len(c & "") <= n Then
TamanhoD = c & String(n - Len(c & ""), " ")
Else
TamanhoD = Left(c, n)
End If
TamanhoD = TamanhoD & "|"
End Function
Function TamanhoE(ByVal c As String, n As Integer) As String
If Len(c & "") <= n Then
TamanhoE = String(n - Len(c & ""), " ") & c
Else
TamanhoE = Right(c, n)
End If
TamanhoE = TamanhoE & "|"
End Function
Grato,