Manual de Excel tutorial de excel

manuales, tutoriales, programacion
programming tutorials, programming manuals
programacion
Manual de excel
Macros en Excel 1 parte
tutorial realizado por el Profesor Ramón Mendoza Ochoa

MACROS EN EXCEL Parte VI

Bienvenidos amigos a la sexta parte de Macros en Excel y Visual Basic, estamos listos para ver mas sobre este interesante curso, en este caso veremos como se pueden archivar los datos de una hoja en un archivo aparte. Aprenderemos a trabajar con archivos secuénciales en Visual Basic. Los archivos secuénciales son aquellos que al registrar sus datos llevan una secuencia, por ejemplo si registro 5 nombres llevaran un orden del 1 al 5, en cambio existen también los archivos aleatorios, pero ellos no respetan la secuencia, por ejemplo los 5 nombres podrían quedar en cualquier posición del 100 en adelante, del 300 en adelante, del 10 en adelante, de donde quieras ponerlos, tu indicas en donde quieres que queden los 5 nombres, pueden quedar hasta separados y no respetar una secuencia.

El problema de los archivos secuénciales, es que si introduces algunos símbolos en la captura pueden alterar el archivo y no funcionar correctamente, por eso se recomienda filtrar los datos con algún código o simplemente no capturar símbolos.

En esta hoja podemos observar 5 nombres, la intención será archivarlos aparte y hacerlos desparecer de la hoja, para después volverlos aparecer en la hoja. A esto se le llamara Registro de datos y Consulta de datos.

Iremos a Visual Basic con Alt+F11 y Insertaremos un UserForm, en el cual dibujaremos dos botones, uno con el nombre de Registro y Otro con el Nombre de Consulta.

Ahora a programar el botón Registro, para poder archivar los nombres.

Private Sub CommandButton1_Click()

Rem se translada a la celda a8

Range("a8").Select

Rem si no hay ningún dato en a8 que no archive de nuevo

If ActiveCell = Empty Then GoTo salte

Rem abre un archivo en la unidad c con el nombre de datos.txt

Rem en forma de añadir Temporal (Output) en el área de almacenamiento #1

Open "c:\datos.txt" For Output As 1

Rem activa una etiqueta para poder regresar

regresa:

Rem escribe el dato de la celda activa en el archivo

Write #1, ActiveCell

Rem borra el dato de la celda

ActiveCell = Empty

Rem baja un renglón para el siguiente nombre

ActiveCell.Offset(1, 0).Select

Rem si la celda esta vacía que no regrese ya

If ActiveCell = Empty Then GoTo salte

Rem regresa a escribir el siguiente nombre en el archivo

GoTo regresa:

salte:

Rem se acabo

Rem cierra el archivo

Close #1

End Sub

Los datos quedaran archivados en la unidad y serán devueltos cuando presiones el botón consulta. Que a continuación se muestra:

Ahora a programar el botón consulta

Private Sub CommandButton2_Click()

Rem se translada a la celda a8

Range("a8").Select

Rem abre un archivo en la unidad c con el nombre de datos.txt

Rem en forma de Leer (input) en el área de almacenamiento #1

Open "c:\datos.txt" For Input As 1

Rem esto significa hazlo mientras no sea fin del archivo

Rem esto quiere decir que no deje de leer los datos

Rem hasta que no se llegue al ultimo de ellos

Do While Not EOF(1)

Rem lee un dato

Input #1, nombre

Rem lo escribe en la celda

ActiveCell.FormulaR1C1 = nombre

Rem baja un renglón para el siguiente nombre

ActiveCell.Offset(1, 0).Select

Rem activa el ciclo Do While-que regrese hasta

Rem que se cumpla la condición

Loop

Rem cierra el archivo

Close #1

EndSub

Que te parece archivar los datos aparte sin que nadie pueda observarlos, esta es la magia de los archivos secuénciales. Este ejemplo viene indexado en un archivo con el nombre de Macros VI.

El siguiente código archiva el nombre, la dirección y el teléfono en el archivo, crea un formulario igual con dos botones.

Private Sub CommandButton1_Click()

Rem se traslada a la celda a8

Range("a8").Select

Rem si no hay ningún dato en a8 que no archive de nuevo

If ActiveCell = Empty Then GoTo salte

Rem abre un archivo en la unidad c con el nombre de datos.txt

Rem en forma de añadir Temporal(output) en el área de almacenamiento #1

Open "c:\datos.txt" For Output As 1

Rem activa una etiqueta para poder regresar

regresa:

Rem captura el nombre en una variable

nombre = ActiveCell

Rem borra el dato de la celda

ActiveCell = Empty

Rem se mueve una columna a la derecha

ActiveCell.Offset(0, 1).Select

Rem captura la direccion en una variable

direccion = ActiveCell

Rem borra el dato de la celda

ActiveCell = Empty

Rem se mueve una columna a la derecha

ActiveCell.Offset(0, 1).Select

Rem captura el telefono en una variable

telefono = ActiveCell

Rem borra el dato de la celda

ActiveCell = Empty

Rem escribe los datos nombre, direccion y telefono en el archivo

Write #1, nombre, direccion, telefono

Rem baja un renglón para el siguiente nombre

ActiveCell.Offset(1, 0).Select

Rem retrocede dos columnas

ActiveCell.Offset(0, -2).Select

Rem si la celda esta vacía que no regrese ya

If ActiveCell = Empty Then GoTo salte

Rem regresa a escribir el siguiente nombre en el archivo

GoTo regresa:

salte:

Rem se acabo

Rem cierra el archivo

Close #1

End Sub

Private Sub CommandButton2_Click()

Rem se translada a la celda a8

Range("a8").Select

Rem abre un archivo en la unidad c con el nombre de datos.txt

Rem en forma de Leer (input) en el área de almacenamiento #1

Open "c:\datos.txt" For Input As 1

Rem esto significa hazlo mientras no sea fin del archivo

Rem esto quiere decir que no deje de leer los datos

Rem hasta que no se llegue al ultimo de ellos

Do While Not EOF(1)

Rem lee los datos

Input #1, nombre, direccion, telefono

Rem escribe en la celda el nombre

ActiveCell.FormulaR1C1 = nombre

Rem se mueve una columna a la derecha

ActiveCell.Offset(0, 1).Select

Rem escribe en la celda la direccion

ActiveCell.FormulaR1C1 = direccion

Rem se mueve una columna a la derecha

ActiveCell.Offset(0, 1).Select

Rem escribe en la celda el telefono

ActiveCell.FormulaR1C1 = telefono

Rem baja un renglón para el siguiente nombre

ActiveCell.Offset(1, 0).Select

Rem retrocede dos columnas

ActiveCell.Offset(0, -2).Select

Rem activa el ciclo Do While-que regrese hasta

Rem que se cumpla la condición

Loop

Rem cierra el archivo

Close #1

End Sub

Este ejemplo viene en el archivo Macros VI-2.

También se puede consultar sin necesidad de leer los datos en la hoja, esto quiere decir leyendo directo del archivo y trayendo los datos al formulario, en el siguiente ejemplo, se programa el botón consulta en formulario.

Dibuja el siguiente formulario, los dos primeros botones es el mismo código anterior, pero el tercer botón incluye el siguiente código:

Private Sub CommandButton3_Click()

Open "c:\datos.txt" For Input As 1

Do While Not EOF(1)

Input #1, nombre, direccion, telefono

If nombre = TextBox1 Then

TextBox2 = direccion

TextBox3 = telefono

End If

Loop

Close #1

End Sub

 

Este ejemplo viene en el archivo Macros VI-3

Solo corra el formulario y escriba el nombre que desea consultar y presione el tercer botón.

Usted podrá consultar cualquiera de los nombres que se encuentren dentro del archivo, sin necesidad de que existan en la hoja, claro esta que primero es necesario presionar el botón registro para archivarlos, pero después se pueden manipular.

Bueno espero que sea de su agrado esta parte y que practiquen mucho los archivos secuenciales.

 
tutorial realizado por el Profesor Ramón Mendoza Ochoa

si estas interesado en excel te ofrecemos a parte del manual de macros de excel que estas leyendo, nuestro manual de manejo de microsoft excel en esta direccion

Recomendar
Recomendar esta pagina a un amigo

Si buscas mas manuales te recomendamos
Sugiere un manual para esta seccion
¿buscas mas manuales? recomendamos solorecursos.com