Rango en un macro

Hola Experto... Compie este macro de aquí mismo de todo experto, pero le quisiera hacer una modificación, lo que deseo es poder yo en la hoja de excel marcar o seleccionar el rango que quiero exportar en vez de tener uno por default (B5:B100)
Sub exportar()
'exporta un rango de celdas resultando col de datos
Dim FileSysObj As Object
Dim ArchivoTxt As Object
Dim AreaTexto
AreaTexto = ActiveSheet.Range("B5:B100").Value
Set FileSysObj = CreateObject("Scripting.FileSystemobject")
Set ArchivoTxt = FileSysObj.CreateTextFile("C:\Ejemplo.txt", True)
'recorre el rango a copiar
Dim celda
For Each celda In AreaTexto
ArchivoTxt.WriteLine celda
Next
ArchivoTxt.Close
End Sub
Saludos,

1 respuesta

Respuesta
1
Para eso existen varias opciones que dependerán de lo que quieras, yo utilizaría el control RefEdit el cual me permite escoger un rango. Podrías poner:
AreaTexto = RefEdit.Text   / Puede ser RefEdit.Value, según los resultados.
Lo probé con los dos y me da Run-time error '424', Object required
Por tu inexperiencia estás usando el control tal cual es, pero aquí te pongo un código que espero te sirva:
Dim SelRange As Range
Dim Addr As String
Application.ScreenUpdating = False
'Obtener la dirección, o referencia, desde el control RefEdit.
Addr = RefEdit1.Value
'Establecer el Objeto de rango del RefEdit1
Set SelRange = Range(Addr)
'Copiar el rango.
'SelRange. Activate
RefEdit1.Value = RefEdit1.Text
SelRange. Copy
Por supuesto me imagino que tienes que modificar algunas cosillas, pero ya es menos, trata de hacerlo.
Lo probé ... pero me sale el mismo error, en esta linea
Addr = RefEdit1.Value
Tendrías que poner el código porque a mí me funciona muy bien. Asegúrate que no le tienes puesto otro nombre a tu control RefEdit, que realmente se llame RefEdit1, caso contrario te dará problemas. También fíjate que no lo tengas bloqueado.
Hola Experto... muchas gracias por tu ayuda... me sirvió de mucho...
También me dieron otra respuesta que también me sirvió... ahí te la dejo para que la tengas
Simplemente cambia esta linea
AreaTexto = ActiveSheet.Range("B5:B100").Value
Cambiala por:
AreaTexto = Selection.Value

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas