es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La zona de copiar y pegar no es la misma.

Quiero copiar un rango específico de una de mis hojas de Excel a un archivo de texto, pero cuando uso el código:

Sub FromExcelToNpad()
    'exportar la hoja activa como archivo de texto
    Dim myPath As String, myFile As String
    myPath = ThisWorkbook.Path & "\"
    myFile = "z.txt"
    Dim WB As Workbook, newWB As Workbook
    Set WB = ThisWorkbook
    Application.ScreenUpdating = False
    Set newWB = Workbooks.Add
    WB.ActiveSheet.UsedRange.Copy newWB.Sheets(1).Range("A4,A10:A22,A28")
    With newWB
        Application.DisplayAlerts = False
        .SaveAs Filename:=myPath & myFile, FileFormat:=xlText
        .Close True
        Application.DisplayAlerts = True
    End With
    WB.Save
    Application.ScreenUpdating = True
End Sub

Sigo obteniendo un error de copiar y pegar, funciona si solo uso range("A4"), pero termina copiando toda la hoja en el archivo de texto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en el rango que se está copiando. El código actualmente intenta copiar un rango no contiguo (A4, A10:A22, A28), lo cual puede estar causando un error de copiar/pegar.

    Para copiar un rango específico de una de tus hojas de Excel a un archivo de texto, intenta modificar el código de la siguiente manera:

    Sub DeExcelANotepad()
    'exportar la hoja activa como archivo de texto
    Dim miRuta As String, miArchivo As String
    miRuta = ThisWorkbook.Path & "\"
    miArchivo = "z.txt"
    Dim WB As Workbook
    Set WB = ThisWorkbook
    Application.ScreenUpdating = False
    WB.ActiveSheet.Range("A4,A10:A22,A28").Copy
    Open miRuta & miArchivo For Output As #1
    Print #1, Clipboard.GetText(TextFormat:=1)
    Close #1
    Application.ScreenUpdating = True
    End Sub

    Este código copiará el rango especificado y lo exportará a un archivo de texto llamado “z.txt” en el mismo directorio que el archivo de Excel.

    Ten en cuenta que este código utiliza el portapapeles para transferir el rango copiado al archivo de texto. Esto puede no funcionar si ya hay otros elementos en el portapapeles.

Comments are closed.