Hace algunos días subí el código de una macro con la cual, podíamos Navegar con un Explorador de Windows desde nuestro Excel.
Aprovecharé la petición de un usuario para presentar una utilidad de éste, así como complementarlo, ejecutando una opción especial de Guardar como texto deilimitado por tabulaciones.
Lo que pedía era:
Para los dos primeros puntos ya teníamos una solución programada, que podemos ver en macro de un filtro avanzado
Recordando el código de ésta:
También podemos añadir una segunda macro que permita el borrado del Filtro obtenido:
Veamos nuestra Hoja de cálculo con una pequeña base de datos que replica el ejercicio propuesto:
Vemos cómo en la celda I2 se incluye el valor por el que queremos filtrar nuestra base de datos y además de donde cogeremos el nombre para el archivo .txt que generaremos.
Para ejecutar fácilmente estas macros las he asignado a distintos controles, tipo botón.
El código en cuestión, para guardar el listado obtenido en un fichero texto es:
Aprovecharé la petición de un usuario para presentar una utilidad de éste, así como complementarlo, ejecutando una opción especial de Guardar como texto deilimitado por tabulaciones.
Lo que pedía era:
...Tengo una tabla de datos en excel compuesta por 15.000 lineas de registro, cada una de las cuales tiene 7 columnas de datos... Esta tabla de datos debe servir para la creación de listas de distribución en Outlook... La macro que necesito ha de hacer lo siguiente: 1.- Filtar la columna 7 cada vez eligiendo un valor diferente 2.- Copiar el contenido de los resultados del filtrado a otra hoja de este libro 3.- Guardar esa nueva hoja como documento de texto separado por tabuladores (para poderlo importar luego a Outlook), tomando como nombre de archivo el valor correspondiente de la colunma 7 que ha servido para el filtrado. |
Para los dos primeros puntos ya teníamos una solución programada, que podemos ver en macro de un filtro avanzado
Recordando el código de ésta:
'ejecutamos un filtro avanzado, copiando el resultado en la Hoja2 Sub Filtro avanzado() Range("Datos").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "Criterios"), CopyToRange:=Sheets("Hoja2").Range("A1"), Unique:=False Sheets("Hoja2").Select Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Selection.Delete End Sub |
También podemos añadir una segunda macro que permita el borrado del Filtro obtenido:
'borra de la Hoja2 los registros filtrados Sub Borrar() Sheets("Hoja2").Select Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlToLeft End Sub |
Veamos nuestra Hoja de cálculo con una pequeña base de datos que replica el ejercicio propuesto:
Vemos cómo en la celda I2 se incluye el valor por el que queremos filtrar nuestra base de datos y además de donde cogeremos el nombre para el archivo .txt que generaremos.
Para ejecutar fácilmente estas macros las he asignado a distintos controles, tipo botón.
El código en cuestión, para guardar el listado obtenido en un fichero texto es:
'para guardar como texto Sub SaveAsNombreCelda() Dim fulla, llibre, savefile As String fulla = InputBox("Nombre de la hoja del libro a copiar", "Hoja:", "Hoja2") 'I2 lo cambiariamos por la celda donde hemos incluido el criterio de filtro llibre = Sheets("filtro_avanz2").Range("I2").Value 'filtro_avanz2 es el nombre de la Hoja donde se encuentra nuestra base de datos Sheets(fulla).Select Sheets(fulla).Copy Dim Titulo, Directorio As String Titulo = "Selecciona una carpeta donde guardar el fichero texto" On Error Resume Next 'evitaría un error en caso de no seleccionar nada o pulsar ESC With CreateObject("shell.application") Directorio = .browseforfolder(0, Titulo, 0).Items.Item.Path End With: On Error GoTo 0 If Directorio = "" Then MsgBox "No se ha seleccionado ningún directorio.", , "Operacion cancelada!" Else savefile = Directorio & "\" & llibre & ".txt" ActiveWorkbook.SaveAs Filename:= _ savefile, FileFormat:=xlText _ , CreateBackup:=False 'la instrucción Fileformat:=xlText es la que permite guardar el fichero como Texto delimitado por tabulaciones End If End Sub |
I could understand . please publish it more easily .
ResponderEliminarthanks
webmaster forum
Estaria vien un video de los pasos a pasos
ResponderEliminarBuenas Estoy tratando de hacer una especie de registro en base a un formulario principal. es decir
ResponderEliminartengo en la hoja1 un formulario que deber ser llenado cada vez que sea necesario y el mismo me genera un numero de formulario con una macro que le puse
lo que necesito es que en la hoja dos me vayan quedando los datos como por eje el nombre,apellido y num de orden generada y servicio generado. sin que se modifiquen cada vez que genere el formulario de la hoja1
Henger Gomez
gracias de antemano
Hola Henger,
ResponderEliminarte agradecería me mandaras el fichero con el ejemplo a
excelforo@gmail.com
y con los códigos generados intentaré darte una solución.
Saludo
Buen día Ismael, podría por favor indicarme si existe alguna forma en que pueda abrir desde excel (vba) un archivo guardado en mi pc con ext. ".msg"
ResponderEliminarEj: tengo un correo que estoy redactando pero lo guardo como borrador en mi pc, requiero luego de un tiempo abrirlo y enviarlo, pero quisiera programar esta tarea desde excel por medio de una macro.
De antemano mil gracias por su tiempo, y felicitaciones por su blog.
Gracias Héctor,
Eliminarpuedes abrir cualquier tipo de fichero con ShellExecute, echa un vistazo aquí:
http://excelforo.blogspot.com.es/2014/01/vba-shellexecute-o-como-abrir-desde.html
Que luego puedas recuperar datos de ese fichero es otra cuestión...
Espero te oriente
Un saludo