Modificar macros para exportar Excel a TXT

Hay una macro a la cual me gustaría que me ayuden a modificarla, lo que deseo es que al abrir mi formulario en la "hoja 1" me exporte datos que están en la "hoja2" en un rango por defecto rango de "A1:D50" automáticamente. Adjunto la macros mencionada.

Private Sub EXPORTAR_Click()
Const DELIMITER As String = ","
    Dim myRecord As Range
    Dim myField As Range
    Dim nFileNum As Long
    Dim sOut As String
    nFileNum = FreeFile
    ruta = ThisWorkbook.Path
    ChDir ruta
    Open "REPORTE.txt" For Output As #nFileNum
    For Each myRecord In Range("A1:A" & _
                Range("A" & Rows.Count).End(xlUp).Row)
        With myRecord
            For Each myField In Range(.Cells, _
                    Cells(.Row, Columns.Count).End(xlToLeft))
                sOut = sOut & DELIMITER & myField.Text
            Next myField
            Print #nFileNum, Mid(sOut, 2)
            sOut = Empty
        End With
    Next myRecord
    Close #nFileNum
MsgBox "Se ha Exportado Correctamente!!! ", vbInformation, "EXPORTAR"
End Sub

1 respuesta

Respuesta
1

Copia esta tu macro modificada en un módulo:

Public Sub EXPORTAR()
Const DELIMITER As String = ","
Dim myRecord As Range
Dim myField As Range
Dim nFileNum As Long
Dim sOut As String
    nFileNum = FreeFile
    ruta = ThisWorkbook.Path
    ChDir ruta
    Open "REPORTE.txt" For Output As #nFileNum
    Set h2 = Sheets("Hoja2")
    For Each myRecord In h2.Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
        With myRecord
            For Each myField In h2.Range(.Cells, _
                    Cells(.Row, Columns.Count).End(xlToLeft))
                sOut = sOut & DELIMITER & myField.Text
            Next myField
            Print #nFileNum, Mid(sOut, 2)
            sOut = Empty
        End With
    Next myRecord
    Close #nFileNum
MsgBox "Se ha Exportado Correctamente!!! ", vbInformation, "EXPORTAR"
End Sub

Fíjate que ahora la subrutina EXPORTAR es pública, para que la puedas ejecutar desde cualquier parte de tu código.

Esto hará que los datos a exportar siempre sean los de la Hoja2. Si quieres que sean de otra hoja, cambia la línea:

Set h2 = Sheets("Hoja2")

y pon entre comillas el nombre de la hoja.

Y pon esto en el evento Initialize de tu formulario, para que llame a la sub Exportar, cuando se abra el formulario.

Private Sub UserForm_Initialize()
EXPORTAR
End Sub

Si te ha valido la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas