Excel - Importar archivos DXF en columnas

 
Vista:
sin imagen de perfil
Val: 140
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Importar archivos DXF en columnas

Publicado por Inmarcesible (60 intervenciones) el 23/04/2021 15:47:50
Buenas a todos.

En el mismo directorio donde tengo mi libro de EXCEL, hay varios archivos DXF (cuyos datos están apilados en una única columna).
Necesito que al ejecutar la macro, cada DFX se importe al libro en cada columna para tener todos los datos en varias columnas del mismo libro y cada columna corresponda a los datos de cada DXF.

Estoy usando este código, pero no veo el error:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub ejemplo()
mio = ActiveWorkbook.Name
ruta = ActiveWorkbook.Path
ChDir ruta & "\"
archi = Dir("*.dxf")
Do While archi <> ""
Workbooks.OpenText archi, origin:=xlWindows, startrow:=1, DataType:=xlDelimited
otro = ActiveWorkbook.Name
Range("a1:a" & Range("a165000").End(xlUp).Row).Copy
Workbooks(mio).Activate
Range("zz2").End(xlToLeft).Offset(0, 1).Select
ActiveSheet.Paste
Range("zz1").End(xlToLeft).Offset(0, 1).Value = otro
Workbooks(otro).Close False
Application.DisplayAlerts = False
archi = Dir()
Loop
ActiveSheet.Columns("a:a").EntireColumn.Delete
MsgBox "proceso terminado"
End Sub

Directamente aparece el mensaje de proceso terminado y no importa los archivos.


¡Muchas gracias!
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

Importar archivos DXF en columnas

Publicado por Antoni Masana (2477 intervenciones) el 25/04/2021 01:09:56
Primero la macro se lee un poco mejor asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub ejemplo()
    mio = ActiveWorkbook.Name
    ruta = ActiveWorkbook.Path
    ChDir ruta & "\"
    archi = Dir("*.dxf")
    Do While archi <> ""
        Workbooks.OpenText archi, origin:=xlWindows, startrow:=1, DataType:=xlDelimited
        otro = ActiveWorkbook.Name
        Range("a1:a" & Range("a165000").End(xlUp).Row).Copy
        Workbooks(mio).Activate
        Range("zz2").End(xlToLeft).Offset(0, 1).Select
        ActiveSheet.Paste
        Range("zz1").End(xlToLeft).Offset(0, 1).Value = otro
        Workbooks(otro).Close False
        Application.DisplayAlerts = False
        archi = Dir()
    Loop
    ActiveSheet.Columns("a:a").EntireColumn.Delete
    MsgBox "proceso terminado"
End Sub

La macro hace lo que tu crees que hace y no lo que tu quieres que haga, bien hasta aquí estamos de acuerdo.
Ahora bien, ¿Qué hace la macro? ni puta idea porque como no soy un procesador no puedo ejecutarla y ver lo que hace.
Tampoco puedo imaginar como lee la macro un fichero DXF porque no se como es un fichero DXF ni como lo lee el Excel.
Por otro lado dices que quieres el contenido de cada fichero en una columna ¿En que parte del programa se especifica eso? porque por lo que veo lo copias siempre en la misma columna, si es que tiene algo que copiar.
¿En que columna tiene que copiar el primer archivo DXF?

Sube unos cuantos ficheros DXF, el libro donde se tiene que copiar y la macro y podremos hablar de cual es el problema.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 140
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Importar archivos DXF en columnas

Publicado por Inmarcesible (60 intervenciones) el 25/04/2021 01:25:24
Muchas gracias por contestar!
Siempre al pie del cañón, Andoni ;)

En el ejemplo adjunto el libro EXCEL con 3 archivos DXF pasados a texto para que veas como se traduce (es una columna de datos). Cuando tu arrastras directamente el DXF al libro abierto del EXCEL, se pone como una columna de datos en la primera columna.

Y pretendo que todos se importen en orden cada uno en una columna del libro, tal y como aparece en el libro del ejemplo adjunto.

Lo curioso es que esta macro me funcionó en su momento y ahora no sé por qué no hace lo que debe. Muy raro...

Muchas gracias de nuevo!!
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Importar archivos DXF en columnas

Publicado por Antoni Masana (2477 intervenciones) el 25/04/2021 02:21:29
Esta es la macro:

Te pongo la macro como creo que debería funcionar, el directorio donde tengo los ficheros de texto no es el de defecto y los ficheros que leo son TXT

La primera es la de mi prueba y la segunda como creo que debería funcionarte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option Explicit
 
Sub MACRO_LWP()
    Dim Archivo As String, Col As Integer, Fila As Long, Reg As String
 
    Archivo = Dir("C:\Download\Ejemplo_1\*.txt")
    Col = 0
    While Archivo <> ""
        Open "C:\Download\Ejemplo_1\" & Archivo For Input As #1
        Col = Col + 1
        Fila = 0
        While Not EOF(1)
            Line Input #1, Reg: Fila = Fila + 1
            Cells(Fila, Col) = Reg
            DoEvents
        Wend
        Close #1
        Archivo = Dir()
    Wend
End Sub

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Explicit
 
Sub MACRO_LWP()
    Dim Archivo As String, Col As Integer, Fila As Long, Reg As String
 
    ruta = ActiveWorkbook.Path
    ChDir ruta
    Archivo = Dir("*.DXF")
    Col = 0
    While Archivo <> ""
        Open Archivo For Input As #1
        Col = Col + 1
        Fila = 0
        While Not EOF(1)
            Line Input #1, Reg: Fila = Fila + 1
            Cells(Fila, Col) = Reg
            DoEvents
        Wend
        Close #1
        Archivo = Dir()
    Wend
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 140
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Importar archivos DXF en columnas

Publicado por Inmarcesible (60 intervenciones) el 25/04/2021 22:59:26
Genial! Gracias

Mañana lo pruebo y te digo ;)
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
sin imagen de perfil
Val: 140
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Importar archivos DXF en columnas

Publicado por Inmarcesible (60 intervenciones) el 26/04/2021 19:37:08
Funciona a la perfección, aunque es un poco lento (será mi chusta de ordenador).

Muchas gracias Andoni!
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Importar archivos DXF en columnas

Publicado por Antoni Masana (2477 intervenciones) el 26/04/2021 20:19:26
Mea culpa.
Se me olvido añadir esto, que no lo pongo al principio porque quiero ir viendo qué hace.

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
33
Option Explicit
 
Sub MACRO_LWP()
    Dim Archivo As String, Col As Integer, Fila As Long, Reg As String
 
    Application.screenupdating=False
    Application.calculation=xlCalculationManual
    Application.EnableEvents=False
    ActiveSheet.DisplayPageBreaks = False
 
    ruta = ActiveWorkbook.Path
    ChDir ruta
    Archivo = Dir("*.DXF")
    Col = 0
    While Archivo <> ""
        Open Archivo For Input As #1
        Col = Col + 1
        Fila = 0
        While Not EOF(1)
            Line Input #1, Reg: Fila = Fila + 1
            Cells(Fila, Col) = Reg
            DoEvents
        Wend
        Close #1
        Archivo = Dir()
    Wend
 
    Application.screenupdating=True
    Application.calculation=xlCalculationAutomatic
    Application.EnableEvents=True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar