Código: Seleccionar todo
Option Explicit
Sub Exportar_A_TXT_v2
Dim oDoc As Object ' El documento actual
Dim oHojas As Object ' La colección de hojas del documento
Dim oHoja As Object ' Hoja en específico
Dim sNewFilename As String ' Nuevo nombre de texto
Dim sURL As String ' URL existente en el documento
Dim sCurrDir As String ' Directorio actual
Dim sExt As String ' La nueva extensión a aplicar
Dim NumeroArchivo As Integer
Dim LongitudColumnas(0) As Integer ' Columnas A-L. Columna A = índice 0 del array
Dim DatoCelda As String
Dim FilaActual As Long
Dim Contador As Long
Dim UltimaColumna As Long
Dim LineaResultado As String
Const COLUMNA_A As Long = 0
UltimaColumna = 11 ' Columna_L
ReDim LongitudColumnas(UltimaColumna)
' COLUMNAS LONGITUD
LongitudColumnas(0) = 3 ' Columna_A 3
LongitudColumnas(1) = 1 ' Columna_B 1
LongitudColumnas(2) = 5 ' Columna_C 5
LongitudColumnas(3) = 8 ' Columna_D 8
LongitudColumnas(4) = 10 ' Columna_E 10
LongitudColumnas(5) = 10 ' Columna_F 10
LongitudColumnas(6) = 1 ' Columna_G 1
LongitudColumnas(7) = 15 ' Columna_H 15
LongitudColumnas(8) = 10 ' Columna_I 10
LongitudColumnas(9) = 8 ' Columna_J 8
LongitudColumnas(10) = 28 ' Columna_K 28
LongitudColumnas(11) = 2 ' Columna_L 2
' TOTAL 101
oDoc = ThisComponent
oHojas = oDoc.Sheets()
oHoja = oHojas.getByName("DATOS")
sURL = ConvertFromURL(oDoc.getLocation())
sCurrDir = Mid(sURL, 1, Len(sURL)-Len(Dir(sURL)))
sExt = ".txt"
sNewFilename = sCurrDir & "Archivo_" & Format(Now, "yyyymmddhhmmss") & sExt
' ¡Atención! Los datos comienzan en la Fila 3 (El índice de la Fila 1 es 0)
FilaActual = 2
' ¡Atención! Los datos comienzan en la Columna A (El índice de la Columna A es 0)
NumeroArchivo = FreeFile
Open sNewFilename For Output As #NumeroArchivo
With oHoja
Do While .getCellByPosition(COLUMNA_A, FilaActual).getString() <> "Fin listado"
LineaResultado = ""
For Contador = 0 To UltimaColumna
DatoCelda = .getCellByPosition(Contador, FilaActual).getString()
If Len(DatoCelda) < LongitudColumnas(Contador) Then
DatoCelda = DatoCelda & Space(LongitudColumnas(Contador) - Len(DatoCelda))
End If
LineaResultado = LineaResultado & DatoCelda
Next
Print #NumeroArchivo, LineaResultado
FilaActual = FilaActual + 1
Loop
End With
Close NumeroArchivo
End Sub
Son 5 lineas y cada linea tene unos campos determinados y algunos en blanco (y hay que respetar las posiciones)
Adjunto imagen para que se entienda mejor el formato
Las lineas siguientes tienen otras caracteristicas de espacios diferentes
Es posible hacerlo?
alguien puede decirme como?
Adjunto ejemplo de txt que me enviaron como modelo de como quedaria con los datos ingresados
Muchas gracias!!