Excel - Copiar en excel y pegar en un bloc de notas sin espacios

 
Vista:
sin imagen de perfil

Copiar en excel y pegar en un bloc de notas sin espacios

Publicado por Pedro Canales (3 intervenciones) el 30/11/2023 20:43:46
Hola buenas tardes, les comparto mi caso:
Tengo una macro en excel que necesito pasar de una hoja a un bloc de notas.
Lo que hace es que copia en excel y pega en un archivo de bloc de notas.
El tema aqui es que cuando copia y pega me deja unos espacios. estos espacios no tienen que aparecer cuando pego, puesto que este archivo se usa para otro programa y si detecta espacios en el txt genera un error.
En realidad la primera fila no son espacios, sino saltos de columnas
y al final de pegar la info si deja un salto de pagina o un "enter"
Esos dos casos se tienen que eliminar.

Lo intente haciendo copy paste primero la primera fila y despues lo demas,
Pero no tuve exito.

Y evidentemente si copio y pego todo desde la priemra fila hasta la ultima, pues me toma los espacios de las columnas.
¿Me pueden ayudar?

Les dejo mi código espero me puedan ayudar


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
Sub CopiarYpegarABlocDeNotas()
    Dim objShell As Object
    Dim objFileSystem As Object
    Dim objFile As Object
    Dim texto As String
    Dim numFilas As Long
 
 
    ' Abrir Bloc de Notas y pegar A1:B1
    Set objShell = CreateObject("WScript.Shell")
    objShell.Run "notepad.exe"
    Application.Wait (Now + TimeValue("0:00:02")) ' Espera 2 segundos para que el Bloc de Notas se abra
 
    ' Obtener el número de filas a copiar desde A2 hasta H
    numFilas = Sheets("LAYOUT").Range("A1").Value
 
    ' Copiar desde A2 hasta H[numFilas]
    Sheets("LAYOUT").Range("A1:H" & numFilas + 1).Copy
 
    ' Pegar en el Bloc de Notas debajo de A1:B1
    objShell.SendKeys "^{END}" ' Mover al final del Bloc de Notas
    objShell.SendKeys "^v" ' Pegar en el Bloc de Notas
 
    ' Esperar un momento para asegurar la pegada
    Application.Wait (Now + TimeValue("0:00:02"))
 
    ' Simular la selección y eliminación de los últimos 6 caracteres
    objShell.SendKeys "^{HOME}" ' Mover al inicio del Bloc de Notas
    objShell.SendKeys "+{END 5}" ' Seleccionar desde el inicio al final de la línea
    objShell.SendKeys "{RIGHT 6}" ' Moverse 6 lugares hacia la derecha
    objShell.SendKeys "{DEL}" ' Borrar la selección
 
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Copiar en excel y pegar en un bloc de notas sin espacios

Publicado por Antoni Masana (2478 intervenciones) el 01/12/2023 10:37:17
Como no veo que hay en las celdas no se que espacios hay que quitar.
Otra cosa es la necesidad de dejar un Block de Notas abierto con un texto. No se que utilidad tiene.
Se me ocurre una solución a falta de más datos: Crear un fichero de texto en el formato que se desea y abrirlo con el Block de Notas y si no se quiere borrar el fichero.

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
sin imagen de perfil

Copiar en excel y pegar en un bloc de notas sin espacios

Publicado por Pedro Canales (3 intervenciones) el 01/12/2023 18:15:42
12 91878.08
20230314 50049606072 014760568545788105 6325.35 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568545788105 6325.35 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2




Lo que se tiene que quitar son los espacios de la primera columna, que son los 6 saltos de columna y el ultimo enter del final del texto.
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

Copiar en excel y pegar en un bloc de notas sin espacios

Publicado por Antoni Masana (2478 intervenciones) el 01/12/2023 18:55:22
supongo que esto es el formato en el que tiene que quedar el texto en el Block de Notas.

1
2
3
4
5
6
7
8
9
10
11
12
13
12 91878.08
20230314 50049606072 014760568545788105 6325.35 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568545788105 6325.35 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2
20230314 50049606072 014760568540555427 7922.74 FLUJO QNA 21 140323 AAAA010101AA1 2

Desconozco que es la primera línea de datos.
Según la macro hay 8 columnas de datos, y examinando los datos no se que dato es de cada columna, porque si separó por espacios me salen 10 columnas de datos.
Supongo que tiene que haber un espacio entre cada columna de datos.
No tengo ninguna idea de como son los datos de origen para poder hacer la exportación.
Seria necesario que envies un libro con datos y me comentes si la propuesta anterior te parece bien, es decir crear un fichero de texto y abrirlo con el NotePad o Block de Notas.

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
sin imagen de perfil

Copiar en excel y pegar en un bloc de notas sin espacios

Publicado por Pedro (3 intervenciones) el 27/12/2023 23:46:03
error

Este es el error.
Comparto el codigo nuevo. comparto el archivo
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
Sub CopiarYGuardarComoTXT()
    Dim numFilas As Long
    Dim filePath As String
    Dim copyRange As Range
    Dim destinationSheet As Worksheet
 
    ' Obtener el número de filas a copiar desde A2 hasta H
    numFilas = Sheets("LAYOUT").Range("A1").Value
 
    ' Definir los rangos a copiar
    Set destinationSheet = Sheets.Add
    Set copyRange = Sheets("LAYOUT").Range("A1:B1")
 
    ' Copiar A1:B1 en la hoja de destino
    copyRange.Copy destinationSheet.Range("A1")
 
    ' Copiar A2:I[numFilas+1] en la misma hoja
    Sheets("LAYOUT").Range("A2:I" & numFilas + 1).Copy destinationSheet.Range("A2")
 
    ' Establecer la ruta y nombre de archivo para guardar
    filePath = Application.GetSaveAsFilename(FileFilter:="Archivos de texto (*.txt), *.txt", Title:="Guardar como archivo de texto")
    If filePath <> "Falso" Then
        ' Guardar el contenido de la hoja de destino como un archivo de texto
        destinationSheet.Copy
        ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=xlText, CreateBackup:=False
        ActiveWorkbook.Close SaveChanges:=False
    Else
        MsgBox "Operación cancelada."
        Application.DisplayAlerts = False
        destinationSheet.Delete
        Application.DisplayAlerts = True
    End If
End Sub
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

Copiar en excel y pegar en un bloc de notas sin espacios

Publicado por Antoni Masana (2478 intervenciones) el 28/12/2023 21:05:16
Con esta macro creas el fichero de texto con el separador que quieras.
Por defecto he puesto que sea una ARROBA ( @ ) pero puedes poner NULO ( "" ) o ( "|" ) o ( ";") o ( "Una frase" ).

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 Copiar_Y_Guardar_Como_TXT()
    Dim Fila As Long, Colu As Long, FilePath As String
 
    Const SEPARADOR = "@"
 
    ' ---&--- Establecer la ruta y nombre de archivo para guardar
    FilePath = Application.GetSaveAsFilename(FileFilter:="Archivos de texto (*.txt), *.txt", _
                                             Title:="Guardar como archivo de texto")
    If FilePath <> "Falso" Then
        Open FilePath For Output As #1
        ' --- Recorre las Filas
        Fila = 1
        While Cells(Fila, "A") <> Empty
            Texto = ""
            ' --- Recorre las Columnas
            Colu = 1
            While Cells(Fila, Colu) <> Empty
                If Colu > 1 Then Texto = Texto + SEPARADOR
                Texto = Texto & Cells(Fila, Colu)
                Colu = Colu + 1
            Wend
            Print #1, Texto
            Fila = Fila + 1
        Wend
        Close #1
    End If
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
0
Comentar