Excel - Convertir hojas a txt

 
Vista:
Imágen de perfil de Verónica
Val: 8
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas a txt

Publicado por Verónica (2 intervenciones) el 05/09/2019 08:45:40
Hola,

He estado intentado crear una macro que convierta una hoja de excel a un archivo txt. El problema es que cuando lo hago el archivo que se crea me sale vacío. No sé cuál es mi error, si es algún complemento que no he activado. Este es el código que estoy usando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub USTXT()
 
    Dim NombreArchivo, RutaArchivo As String
    Dim obj As FileSystemObject
    Dim tx As Scripting.TextStream
    Dim Ht As Worksheet
    Dim i, j, nFilas, nColumnas As Integer
 
    NombreArchivo = "US2019- "
    RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".txt"
 
    Set obj = New FileSystemObject
    Set tx = obj.CreateTextFile(RutaArchivo)
    Set Ht = Worksheets("USUARIO")
 
    nFiles = Ht.Range("A2", Ht.Range("A2").End(xlDown)).Cells.Count
    nColumnas = Ht.Range("A1", Ht.Range("A1").End(xlToRight)).Cells.Count
 
    For i = 1 To nFilas
 
        For j = 1 To nColumnas
 
            tx.Write Ht.Cells(i + 1, j)
            If j < nColumnas Then tx.Write ","
 
        Next j
 
        tx.WriteLine
 
    Next i
 
End Sub

Adjunto el archivo por si es algo que no he activado en el programa.
Muchas Gracias Por su tiempo!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas a txt

Publicado por Antoni Masana (2464 intervenciones) el 05/09/2019 12:41:39
El problema es muy simple y se arregla poniendo en la primera linea del modulo:

1
Option Explicit

Con esto estas obligado a declarar las variables y a darte cuenta que en la línea 16 asignas el numero de filas a la variable nFiles y en el FOR haces referencia a la variable nFilas, en estas cosas los lenguajes de programación son muy quiquillosos.

Por otro lado este codigo te esta devolviendo todas las lineas de la hoja:

1
Ht.Range("A2", Ht.Range("A2").End(xlDown)).Cells.Count

Yo tambien soy muy quisquillosos con estas cosas y prefiero esta, no me fi del EXCEL.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub USTXT()
    ...
    nColumnas = Ht.Range("A1", Ht.Range("A1").End(xlToRight)).Cells.Count
 
    nFilas=1
    While Cells(nFilas, "C") <> ""
        For j = 1 To nColumnas
            tx.Write Ht.Cells(nFilas + 1, j): DoEvents
            If j < nColumnas Then tx.Write ","
        Next j
        tx.WriteLine
        nFilas = nFilas + 1
    Wend
End Sub

Lee hasta que encuentre la columna C (En este caso es la que tiene datos en todas las filas) este vacía. Veras que el resultado entre tu bucle y el mio es sustancialmente diferente.

Además es conveniente en bucles que puedan ser largos poner el DoEvents

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Verónica
Val: 8
Ha aumentado su posición en 3 puestos en Excel (en relación al último mes)
Gráfica de Excel

Convertir hojas a txt

Publicado por Verónica (2 intervenciones) el 06/09/2019 06:56:39
Hola muchas gracias por la respuesta, y la información adicional!! Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar