Excel - Guardar nombre con contenido de celda

 
Vista:
Imágen de perfil de Jesus David
Val: 6
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Guardar nombre con contenido de celda

Publicado por Jesus David (3 intervenciones) el 29/01/2020 20:19:02
Hola a todos, mi consulta es la siguiente:

Tengo una base de datos con registros diarios, cada columna representa un día y tiene los registros de dicho día. Lo que quiero es que cuando seleccione la celda con el día, pueda con un botón generar un archivo .txt con el nombre del día-mes y los registros dentro de el.

Por ejemplo selecciono el 04-jun, entonces al presionar el botón deben crearme un archivo .txt que se llame "04-jun.txt y así sucesivamente si selecciono otro día.

El código que llevo es este y no se como poner dinámico el día. Además si es posible eliminar el espacio que se genera en el .txt seria de mucha ayuda.

Gracias. Adjunto el archivo que estoy trabajando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub convertidor_txt()
 
Dim ruta As String
 
    ruta = "C:\Users\jesus santrich\Documents\Documentos escritorio\pruebas\04-Jun.txt"
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
 
    Open ruta For Output As #1
 
    For i = 1 To lastrow
 
        Print #1, Cells(i + 1, 1).Value
 
     Next i
 
    Close #1
 
End Sub
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 Andres Leonardo
Val: 3.136
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Guardar nombre con contenido de celda

Publicado por Andres Leonardo (1583 intervenciones) el 29/01/2020 22:20:17
1
ruta = "C:\Users\jesus santrich\Documents\Documentos escritorio\pruebas\"& range("A2").value

si es que en A2 esta la fecha

El tema donde seleccionas

**No abri el archivo estoy desde el mobil
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 Jesus David
Val: 6
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Guardar nombre con contenido de celda

Publicado por Jesus David (3 intervenciones) el 30/01/2020 14:11:31
Buenos días, gracias por tu mensaje Andres. Usando la ruta que recomienda no me imprime un archivo en formato .txt y la idea es que sea dinámico, en ese caso solo me imprimiría la celda A2.
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

Guardar nombre con contenido de celda

Publicado por Antoni Masana (2477 intervenciones) el 30/01/2020 14:41:52
Te pongo dos versiones:

En la primera tienes que estar en la fila 1 para que la macro grabe el fichero:

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
Sub convertidor_txt()
    Dim Fila As Long, Colu As Long, Ruta As String, File As String
 
    Const Text_1 = "¿Quiere Guardar el fichero: "
    Const Text_2 = vbYesNo + vbQuestion
    Const Text_3 = "GUARDAR"
 
    Fila = ActiveCell.Row
    Colu = ActiveCell.Column
    Ruta = "C:\Users\jesus santrich\Documents\Documentos escritorio\pruebas\"
 
    If Fila = 1 Then
        If Not Cells(Fila, Colu) = Empty Then
            File = Format(Cells(1, 3), "dd-mmm") + ".txt"
 
            If MsgBox(Text_1 & File, Text_2, Text_3) = vbYes Then
                Ruta = Ruta + File
 
                Open Ruta For Output As #1
                Fila = 2
                While Cells(Fila, Colu) <> Empty
                    Print #1, Cells(Fila, Colu).Value
                Wend
                Close #1
                MsgBox "Fichero guardado.", vbInformation + vbOKOnly, "Fin Macro"
            End If
        End If
    End If
End Sub

En esta segunda versión es lo mismo que la anterior pero puede estar en cualquier fila de la columna a grabar:

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
Sub convertidor_txt()
    Dim Fila As Long, Colu As Long, Ruta As String, File As String
 
    Const Text_1 = "¿Quiere Guardar el fichero: "
    Const Text_2 = vbYesNo + vbQuestion
    Const Text_3 = "GUARDAR"
 
    Fila = 1
    Colu = ActiveCell.Column
    Ruta = "C:\Users\jesus santrich\Documents\Documentos escritorio\pruebas\"
 
    If Not Cells(Fila, Colu) = Empty Then
        File = Format(Cells(1, 3), "dd-mmm") + ".txt"
 
        If MsgBox(Text_1 & File, Text_2, Text_3) = vbYes Then
            Ruta = Ruta + File
 
            Open Ruta For Output As #1
            Fila = 2
            While Cells(Fila, Colu) <> Empty
                Print #1, Cells(Fila, Colu).Value
            Wend
            Close #1
            MsgBox "Fichero guardado.", vbInformation + vbOKOnly, "Fin Macro"
        End If
    End If
End Sub


En todos los casos verifica que la celda de la fila 1 no esta vacía.
Pregunta antes de guardar.
Aviso de que finaliza la grabación.

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
Imágen de perfil de Jesus David
Val: 6
Ha aumentado su posición en 2 puestos en Excel (en relación al último mes)
Gráfica de Excel

Guardar nombre con contenido de celda

Publicado por Jesus David (3 intervenciones) el 01/02/2020 07:11:37
Gracias amigo, fenomenal!

Tuve que hacer algunas modificaciones pero me has salvado. Por cierto, los datos cuando se van al block de notas quedan con cierto espacio respecto al borde.. sabes si hay alguna forma de corregirlo?

Te agradezco mucho tu apoyo y el hecho de tomarte el tiempo de ayudarme.

Este fue el código final.

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
Sub convertidor_txt()
    Dim Fila As Long, Colu As Long, Ruta As String, File As String
 
    Const Text_1 = "¿Quiere Guardar el fichero: "
    Const Text_2 = vbYesNo + vbQuestion
    Const Text_3 = "GUARDAR"
 
    Fila = 1
    Colu = ActiveCell.Column
    Ruta = "C:\Users\Usuario\Desktop\pruebas\"
 
    If Not Cells(Fila, Colu) = Empty Then
        File = Format(Cells(1, Colu), "dd-mmm") + ".txt"
 
        If MsgBox(Text_1 & File, Text_2, Text_3) = vbYes Then
            lastrow = Cells(Rows.Count, Colu).End(xlUp).Row
            Ruta = Ruta + File
            Open Ruta For Output As #1
                For i = 1 To lastrow
 
                    Print #1, Cells(i + 1, Colu).Value
                   Next i
                Close #1
            MsgBox "Fichero guardado.", vbInformation + vbOKOnly, "Fin Macro"
        End If
    End If
End Sub



Saludos, Mil gracias!
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