miércoles, 7 de enero de 2015

Macros en Excel para ingenieros, Visual Basic para ingenieros

Programación en Visual basic (VBA) en Excel para Ingenieros

El presente trabajo esta orientado especialmente a ingenieros civiles, estudiantes de ingeniería civil, o cualquier persona que este dedicada a realizar estimaciones, precios unitarios, cálculos de diseño, y cálculos topográficos (ingeniería  civil, arquitectura, ingeniería agronoma, ingeniería forestal) y que desee  a aprender el lenguaje de visual basic en excel, con el fin de automatizar los procesos repetitivos y ahorrar tiempo de trabajo para  lo cual se presentaran ejemplos relacionados con la ingeniería y se explicaran las herramientas y conceptos del lenguaje de programación de visual basic en excel. 

ejemplo 1  funcion  "ANCHO_CEPA"
macro de excel que genera una función  que lee una celda y de acuerdo con el valor nos regresa un valor correspondiente, en este ejemplo,  los valores de la celda que se lee  serán los diámetros de una tubería de agua potable y  en la celda donde se coloque la función devolverá el ancho de cepa correspondiente (se entiende que es una tubería que tiene que ir enterrada, pvc. pad o ped, entre otras), la función es  útil cuando se manejan varios diámetros de tuberías y cuando son muchos generadores por ejemplo en un proyecto de  "un macro sistema de agua potable para alguna ciudad" donde  realizaran  muchos generadores de tubería" en este caso nos ahorrara mucho tiempo y claro que es un ejemplo que se puede adaptar a muchos casos particulares. yo la utilice en un proyecto  de  "macro-sistema de agua potable" donde se realizaron los cálculos de la red y la linea con el software de civilCAD  el cual arroja un archivo de excel con las longitudes de cada tramo con su respectivo diámetro, por lo que copiaba y pegaba las listas en mis generadores y luego ocupaba la función "ancho_cepa" para hacer los generadores de: trazo y nivelación, excavación, plantilla de arena, relleno acostillado, relleno sobre el acostillado y limpieza.


Hoja de calculo que genera civilCAD (modulo de agua potable)




En la imagen se ve en la celda G13  la función "ANCHO_CEPA", la cual contiene un argumento que en este caso lo toma de la celda C13 y su valor es el diámetro de la tubería, la función da como resultado  el valor del ancho de la cepa de acuerdo a los valores correspondientes a cada diámetro de tubería.

bien pues para realizar nuestra macro tomamos el criterio del "MANUAL DE AGUA POTABLE, ALCANTARILLADO Y SANEAMIENTO" LINEAMIENTOS TÉCNICOS PARA LA ELABORACIÓN DE ESTUDIOS Y PROYECTOS DE AGUA POTABLE Y ALCANTARILLADO SANITARIO  de la Comisión Nacional del Agua (México) para definir los anchos de cepa correspondiente a cada diámetro comercial de tubería,

cm pulgadas ancho de cepa
2.5 1 50
3.8 1.5 55
5.0 2 55
6.3 2.5 60
7.5 3 60
10.0 4 60
15.0 6 70
20.0 8 75
25.0 10 80
30.0 12 85
35.0 14 90
38.0 15 95
40.0 16 95
45.0 18 100
50.0 20 115
61.0 24 130
76.0 30 150
91.0 36 170


y entrando de lleno al tema de la programacion en visual basic

Para programar en excel se pueden utilizar los PROCEDIMIENTOS SUB (SUB) y las FUNCIONES (FUNCTION), En excel vienen numerosas funciones como por ejemplo  =suma(A2:A5), las cuales las escribimos dentro de una celda y ocupamos las celdas como argumentos de estas funciones o bien tecleamos directamente valores, podemos también hacer funciones de este tipo mas adecuadas a nuestras necesidades como nuestro ejemplo. Para hacerlo utilizaremos una  FUNCION (FUNCTION) del lenguaje de programación Visual Basic, la cual tiene como característica que siempre retorna un valor y esta estructurado (sintaxis)  como sigue:

Function  Nombre_de_la_funcion (argumento1,argumento2.....)
Dim Variable1 as Tipo, Variable2 as tipo ..........
rutinas....................
End Function

En Visial Basic se  nombran las variables después del nombre o la función
y se comienza con  "DIM" después el nombre de la variable, seguido de "AS" ,  y por ultimo el tipo de la variable. como se ve en el ejemplo

Y la herramienta SELECT CASE que sirve para decidir entre un numero casi ilimitado de opciones, Como se ve en el ejemplo  Despues de SELEC CASE  se escribe la variable  en este caso VALOR_CELDA  que de acuerdo al valor  que tenga y que si es igual al valor puesto despues de CASE  se ejecutara la siguiente instrucción de no ser igual se pasara al  siguiente CASE.  

aquí se muestra  el código de la función:



Function ancho_cepa(VALOR_CELDA)

Dim columna As Integer, ancho As Single

Select Case VALOR_CELDA
Case 25.4
ancho = 0.5
Case 38.1
ancho = 0.55
Case 50.8
ancho = 0.55
Case 63.5
ancho = 0.6
Case 76.2
ancho = 0.6
Case 101.6
ancho = 0.6
Case 152.4
ancho = 0.7
Case 203.2
ancho = 0.75
Case 254
ancho = 0.8
End Select
ancho_cepa = ancho
End Function


y aqui se muestra como se ve en el editor de visual Basic



Para poder utilizar esta macro  puede copiar el codigo y pegarlo en el editor de visual basic, que esta en la ficha DESARROLLADOR, la cual  no esta cuando se instala el excel, para activarla tendrá que ir al menú archivo,  dar click en opciones, y se desplegara una ventana, ahi  dara click en personalizar cinta de opciones y habilitara la casilla de  DESARROLLADOR. como se ve en la siguiente imagen.


una ves que tenga esta casilla de DESARROLLADOR en excel,  seleccione esa pestaña y en la esquina superior  izq  selecione el icono de Visual basic.


una ves hecho esto abrirá  el editor de visual basic, tendrá este aspecto.


observese que en la parte izq aparecera un arbol, en donde se lea VBApoject y enttre parentesis el nombre del archivo actual, sobre este dara click derecho se desplegara un cuadro  ahi escogera  INSERTAR, y despues MODULO. tendra entonces este aspecto el editor de visual basic.


en la parte derecha pegara la macro  desde fuction hasta End fuction, se vera asi.



No hay comentarios.:

Publicar un comentario

LOSA DE CONCRETO ARMADO, MATERIALES Y COSTOS ...