MARZO E AR O DE 20 9 009 APLICACIO ONES DE MICR ROSOFT EXCE AUT T EL, TOCAD Y D VISU UAL BA ASIC EN OBTE N ENCIÓN DE CANTIDA N ADES D DE MATE ERIAL E UN PROYE EN ECTO C CONSTR RUCTIV VO PR ROYECTO DE PASANT D TÍA INVESTIGATIVA PARA OPTA EL P AR GRA ADO DE TECNOLOGO EN CON NSTRUCCIO ONES CIVIL LES OSCAR M MAURICIO MENDOZA GRISALES UNIVERSID DAD DISTRITA AL F. JOSE DE CALDAS TEC. TECNOLOG GÍA EN CONSTRUCCIONES S CIVILES MARZO DE 2009 APLICACIONES DE MICROSOFT EXCEL, AUTOCAD Y VISUAL BASIC EN OBTENCIÓN DE CANTIDADES DE MATERIAL EN UN PROYECTO CONSTRUCTIVO OSCAR MAURICIO MENDOZA GRISALES UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA TECNOLOGÍA EN CONSTRUCCIONES CIVILES BOGOTÁ D.C. 2009 APLICACIONES DE MICROSOFT EXCEL, AUTOCAD Y VISUAL BASIC EN OBTENCIÓN DE CANTIDADES DE MATERIAL EN UN PROYECTO CONSTRUCTIVO OSCAR MAURICIO MENDOZA G PROYECTO DE PASANTÍA INVESTIGATIVA PARA OPTAR EL GRADO DE TECNÓLOGO EN CONSTRUCCIONES CIVILES Tutor: INGENIERO HÉCTOR PINZÓN UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD TECNOLÓGICA TECNOLOGÍA EN CONSTRUCCIONES CIVILES BOGOTÁ D.C. 2009 DEDICATORIA Le dedico este trabajo de grado, ante todo, a Dios por escucharme y ayudarme dándome fuerza y serenidad en aquellos momentos que tenía ganas de tirar la toalla, por darme salud y creatividad… A ti Mamí, mas que dedicarte esto, te lo entrego, esto es tuyo, es tu obra, gracias a tu temple, a tu lucha, a no dejarme caer nunca, y a tus consejos es que hemos logrado terminar. A ti Papá, por tus regaños, por intentar guiarme, por quererme a tu manera. Sé que hubieses disfrutado mas si fuera Ingeniero Agrícola, pero aquí estoy, no me arrepiento de la carrera que escogí, me siento feliz por lo que soy, cada una de tus palabra me hacen mejor persona. A ti Albaluz mi hermanita, que aunque nuestra relación sea distante siempre tendré presente que fuiste tú quien me acompaño en esos momentos difíciles. Y por último, pero no lo menos importante, a ti Diosmery, mi amor, por estar conmigo a mi lado, apoyándome y sobre todo amándome; Cielo, ya pasó la etapa más crítica de la carrera y aguantamos todas las adversidades, gracias por aguantar mis locuras y mis ataques de estrés, gracias por mantenerte allí, paciente a lo largo de toda la carrera… nuestra carrera. AGRADECIMIENTOS A mi gran amigo Ernesto, ya que si hoy camino por el mundo de la programación de computadoras es gracias a que tú me enseñaste los primeros pasos. A cada uno de los maestros, que han sido parte de mi formación profesional. Cada uno de ellos aportó algo en lo realizado. TABLA DE CONTENIDO INTRODUCCIÓN ............................................................................................ 8 1 MICROSOFT EXCEL............................................................................... 9 1.1 QUE ES MICROSOFT EXCEL .............................................................. 9 1.2 1.2.1 1.2.2 1.2.3 ELEMENTOS DE TRABAJO EN MS EXCEL ..................................... 10 Fórmulas .....................................................................................................10 Funciones ...................................................................................................11 Aplicaciones en el cálculo de cantidades de material .................................11 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 MACROS EN MS EXCEL ................................................................... 14 ¿Qué es una macro? ..................................................................................14 Objetos, propiedades y métodos. ...............................................................15 Conjuntos. ...................................................................................................16 Objetos de Objetos. ....................................................................................16 Programación Orientada a Objetos o Programación Basada en Objetos...17 1.4 1.4.1 1.4.2 1.4.3 EDITOR DE VISUAL BASIC. .............................................................. 17 Módulos ......................................................................................................18 Procedimientos ...........................................................................................18 Ejecutar un procedimiento o función. ..........................................................19 1.5 FUNCIONES PERSONALIZADAS PRECISIÓN ................................ 20 1.6 APLICACIONES DE FUNCIONES PERSONALIZAS AL CÁLCULO DE CANTIDADES DE MATERIAL ...................................................................... 21 1.6.1 1.6.2 1.6.3 1.6.4 Función NoBarras .......................................................................................22 Función BarraNo .........................................................................................23 Función PesoBarra .....................................................................................24 Función LgBarras ........................................................................................25 1.7 2 TRABAJAR CON FUNCIONES PERSONALIZADAS ......................... 26 AUTOCAD ..............................................................................................28 2.1 PRESENTACIÓN GENERAL DE LA TECNOLOGÍA ACTIVEX DE AUTOCAD …………………………………………………………………………………28 2.2 PRESENTACIÓN GENERAL DE LA INTERFAZ ENTRE AUTOCAD Y VISUAL BASIC PARA APLICACIONES (VBA) ............................................. 29 2.3 2.4 2.5 2.6 2.6.1 2.6.2 2.6.3 USO COMBINADO DE ACTIVEX Y VBA EN AUTOCAD ................... 29 EL EDITOR DE VBA EN AUTOCAD................................................... 30 ESTRUCTURAS DE OBJETOS DE AUTOCAD ................................. 30 VBA Y AUTOCAD EN LA OBTENCIÓN DE CANTIDADES DE ACERO30 Inicio de aplicación Ms Excel (IniExcel) ......................................................31 Solicitud al usuario de datos y cuantías ......................................................32 Guardado y cierre de aplicación Ms Excel ..................................................35 2.6.4 Terminación de la macro.............................................................................36 3 CALCULO DE CANTIDADES DE ACERO CON AYUDA DE MACROS37 3.1 PLANOS DE TRABAJO ......................................................................... 37 3.2 3.3 4 5 PASAR CUANTÍAS DE ACERO DESDE AUTOCAD A EXCEL ......... 37 TRABAJO CON LOS DATOS EN EXCEL .......................................... 43 CONCLUSIONES ...................................................................................49 BIBLIOGRAFÍA ......................................................................................50 5.1 INFOGRAFIA ........................................................................................ 50 6 7 RECOMENDACIONES ...........................................................................52 ANEXOS ………………………………………………………………………53 7.1 FUNCIONES EXCEL ............................................................................ 53 7.2 PROCEDIMIENTO AUTOCAD ........................................................... 55 Nota de aceptación ____________________________________ ____________________________________ ____________________________________ ____________________________________ ____________________________________ ____________________________________ ABNER GRANADOS M. Jurado JAVIER HIGUERA Jurado Bogotá, 17 de Marzo de 2009 LISTA DE FIGURAS Fig-3.1 Estructura de una formula en Excel ..............................................................10 Fig. 3.2 Detalle plano de despiece de acero .............................................................12 Fig. 3.3 Referencia de despiece................................................................................12 Fig. 3.4 Vista general del Editor de Visual Basic.......................................................18 Fig. 3.5 Vista de espacio de trabajo en editor de Visual Basic .................................18 Fig. 3.6 Función NoBarras ........................................................................................23 Fig. 3.7 Función BarraNo ..........................................................................................23 Fig. 3.8 Función PesoBarra.......................................................................................24 Fig. 3.9 Función LgBarras .........................................................................................25 Fig. 3.10 Función PesoBarra2...................................................................................27 Fig. 4.1 Función IniCantAcero ...................................................................................31 Fig. 4.2 Función IniExel .............................................................................................32 Fig. 4.3 Modelo de despiece .....................................................................................32 Fig. 4.4 Función TexExcel (parte 1) ..........................................................................34 Fig. 4.5 Función TexExcel (parte 2) ..........................................................................34 Fig. 4.6 Función Continuax .......................................................................................35 Fig. 4.7 Función CierraExcel .....................................................................................35 Fig. 5.1 Ejercicio ejemplo (Solicitud de nombre de Archivo) .....................................38 Fig. 5.2 Ejercicio ejemplo (Solicitud de nombre de Elemento) ..................................38 Fig. 5.3 Ejercicio ejemplo (Solicitud descripción de elemento) .................................39 Fig. 5.4 Ejercicio ejemplo (Solicitud cantidad de elementos) ....................................39 Fig. 5.5 Ejercicio ejemplo (Solicitud de sección de elemento) ..................................40 Fig. 6 Ejercicio ejemplo (Solicitud de cuantías).........................................................40 Fig. 5.7 Ejercicio ejemplo () .......................................................................................41 Fig. 5.8 Ejercicio ejemplo (Final de proceso) ............................................................41 Fig. 5.9 Ejercicio ejemplo (Userform de salida).........................................................42 Fig. 5.10 Ejercicio ejemplo (Localización de archivo creado en Autocad) ................42 Fig. 5.11 Ejercicio ejemplo (Descripción de archivo creado en Autocad) .................43 Fig. 5.12 Ejercicio ejemplo (Aplicación de Funcion NoBarras) .................................44 Fig. 5.13 Ejercicio ejemplo (Aplicación de Función BarraNo) ...................................44 Fig. 5.14 Ejercicio ejemplo (Aplicación Función PesoBarra) .....................................44 Fig. 5.15 Ejercicio ejemplo (Aplicación Función LgBarras) .......................................45 Fig. 5.16 Ejercicio ejemplo (Aplicación Función LgFlejes) ........................................45 Fig. 5.17 Ejercicio ejemplo (Utilización de funciones lógicas) ...................................46 Fig. 5.18 Ejercicio ejemplo ........................................................................................46 LISTA DE TABLAS Tabla- 3.1 Elementos de una formula en Excel ........................................................11 Tabla 3.2 Formato común de análisis de cantidad de acero.....................................13 Tabla 3.3 Formulación común de hoja de cálculo para análisis de cantidad de acero ..................................................................................................................................13 Tabal 3.4 Formato de Tabla análisis de cuantías en Excel con ayuda de macros ...21 Tabla 3.5 Utilización de Fórmulas definidas por el usuario en Excel ........................22 INTRODUCCIÓN La ingeniería civil es uno de los campos más extensos dentro de las carreras profesionales. Comprende una amplia diversidad de técnicas en el espacio laboral, y un progresivo desempeño creativo de cada profesional en el diseño de obras civiles. El control de ejecución de un proyecto de construcción es una de las muchas tareas encargadas a los profesionales de ingeniería civil, trabajo en el cual el profesional debe apoyarse en conceptos y herramientas adecuadas para cumplir su labor correspondiente. Un aspecto fundamental en el control de un proyecto constructivo es el análisis de cantidades de material. Esta información es de alta importancia ya que de dichos datos depende el costo del proyecto, factor determinante en la ejecución del mismo. El sobrecosto de una obra puede acarrear inconvenientes para la ejecución o terminación de toda construcción. Así mismo un bajo costo puede ser índice de mal cálculo de las cantidades de material o la utilización de materiales de baja calidad. Comúnmente se han considerado técnicas para el cálculo de cantidades de material y cada una de estas se basan principalmente en la observación y medida de cuantías sobre planos, seguidamente su respectiva ordenación y análisis. Este trabajo comúnmente se realiza con ayuda de hojas de cálculo que permiten un manejo más propicio a estos datos. Los métodos comunes para la medición de cantidades de material se han caracterizado por su alta demanda de tiempo que requieren para la obtención precisa de las cantidades de material. Por tal razón, el objeto de este proyecto es presentar alguna alternativa basada en el manejo de herramientas informáticas que puedan agilizar el proceso de cálculo y brinden una mayor precisión. El uso adecuado de aplicaciones de Windows como Ms Excel y Autocad pueden permitir un rendimiento importante en los trabajos o actividades del ingeniero y especialmente en el cálculo de cantidades de material, además siendo estas aplicaciones de uso común entre los diferentes profesionales, es importante conocer las posibilidades que ellas nos ofrecen. El proyecto contempla un análisis de algunas de las herramientas que ofrece cada software para aplicar en las diferentes necesidades. La finalidad del presente trabajo es investigar algún método factible para el tratamiento de cantidades de obra, para aportar así alguna experiencia en el tema tratado y el trabajo con herramientas informáticas. El trabajo se subdivide en tres capítulos bases que presentan el modelo de investigación planteado para lograr la obtención de resultados esperados. Empezando por analizar el software Excel como herramienta de administración y calculo. Seguidamente el manejo de Autocad como Software principal en el tratamiento de planos, finalmente se realiza un ejemplo de aplicación utilizando los dos programas antes vistos. Del presente trabajo se deberá concluir la factibilidad y utilidad que tienen los programas de Microsoft Excel y Autocad en el manejo, control y cálculo de cantidades de material para así determinar la necesidad que tiene cada profesional de aprender a utilizar estas herramientas. 1 MICROSOFT EXCEL Excel es una de las herramientas informáticas más utilizadas en la ingeniería para la organización y cálculo de la cantidad de material necesaria para un proyecto, debido a su gran versatilidad y fácil manejo. Aún cuando no aprovechemos todas las ventajas que este software nos ofrece éste se ha convertido en una herramienta indispensable para cualquier profesional, por esta razón contemplaremos en este capítulo una introducción general a lo que es la programación básica y avanzada de hojas de cálculo para obtener así el máximo rendimiento en tiempo y precisión de los datos. Para lograr esto se explicarán algunos ejemplos de aplicación al cálculo de cantidades de acero, utilizando las herramientas de Excel. Al finalizar el capítulo se llegara a tener un concepto claro de todas las ventajas que Excel ofrece y que muy pocos conocemos. 1.1 QUE ES MICROSOFT EXCEL Excel es un programa de hoja de cálculo que nos ayuda a realizar cálculos estadísticos, matemáticos, financieros, creación de gráficas, vínculos entre hojas de cálculo; entre otras utilidades. Su principal función es realizar operaciones matemáticas de la misma manera que trabaja la más potente calculadora, pero también la de computar complejas interrelaciones, ordenar y presentar en forma de gráfico los resultados obtenidos. Así como insertar bloques de texto e imágenes. Los principales elementos de trabajo son: Fila: Conjunto de varias celdas dispuestas en sentido horizontal. Título de fila: Está siempre a la izquierda y nombra a las filas mediante números, que en el caso de Excel Xp van desde el 1 hasta el 65,536. Columna: Conjunto de varias celdas dispuestas en sentido vertical. Título de columna: Está siempre arriba y nombra a las columnas mediante letras, van desde la A hasta la IV. Luego de la columna Z viene la AA, AB, AC, etc.; luego de la AZ viene la BA, la BB, la BC, etc.; y así sucesivamente. Celda: Es la intersección de una fila y una columna y en ella introducimos los gráficos, trátese de texto, números, fecha u otros datos. Una celda lleva el nombre de la columna, seguido del nombre de la fila. Por ejemplo, la celda que es la intersección de la fila 29 con la columna F, es F29. Rango: Los rangos son una referencia a un conjunto de celdas de una planilla de cálculos. Son definidas mediante letras y números. Denominada mediante la celda de una esquina del rango (generalmente la superior izquierda), luego dos puntos y la esquina opuesta. Por ejemplo, al rango que comprende las celdas C4, C5, C6, C7, D4, D5, D6, D7, E4, E5, E6 y E7 es C4:E7. 9 1.2 ELEMENTOS DE TRABAJO EN MS EXCEL Para trabajar en Excel se deben conocer algunos elementos de trabajo básicos que éste nos ofrece como es el caso de las fórmulas y las funciones. Cada una de estos elementos son indispensables y de utilización obligatoria para obtener un excelente resultado del trabajo proyectado. 1.2.1 Fórmulas Las Fórmulas en Microsoft Excel, permiten calcular un valor a partir de una serie de datos que se introduzcan o los ya existentes en otras celdas que harán referencia a la fórmula a modo de ecuación. Esto permitirá que se modifiquen los valores que contengan ciertas celdas y se actualicen. Las fórmulas nos ayudan a obtener un resultado de cualquier cálculo que se realice. Además de contar con las funciones predeterminadas que también nos facilitan a realizar otras operaciones. Para que Excel identifique que se realizará una fórmula o una función debemos comenzar siempre con el signo igual “=”. Una fórmula se compone de varios elementos: • • • • • Signo “=” 1 Referencia de celdas Valores Operadores Funciones Fig-3.1 Estructura de una formula en Excel Referencia de celdas Signo “=” =(A5+B5)*45-PROMEDIO(A4:C4) Operadores Funciones 1 Si se comienza con los signos + ó - , Excel también comprende que es una fórmula y añade automáticamente el signo =. Si por algún motivo se necesita empezar en una celda con =, + ó – se quiere que Excel NO lo considere como fórmula, se precede con el apóstrofo ( ‘ ), el cual queda invisible, no saldrá escrito en la celda. 10 Tabla- 3.1 Elementos de una formula en Excel 1.2.2 Funciones Las funciones son fórmulas predefinidas que ejecutan cálculos utilizando valores específicos, denominados argumentos, en un orden determinado o estructura. Las funciones pueden utilizarse para ejecutar operaciones simples o complejas. Excel tiene predefinidas una gran cantidad de funciones, las cuales se clasifican de acuerdo a su aplicación, entre estos grupos de funciones encontramos: financieras, de fecha y hora, matemáticas y trigonométricas y estadísticas entre otras. El manejo adecuado de algunas de estas funciones es el componente principal para el aprovechamiento de la capacidad de Ms Excel, ya que con ayudad de estas se pueden realizar o estructurar plantillas de calculo que realizan determinados procesos y nos generan resultados rápidos y precisos. • Sintaxis básica Todas las funciones empiezan con el signo igual seguido por el nombre de la función en letras mayúsculas, finalmente están los parámetros necesarios para dicha función en medio de paréntesis. Ejemplo: =nombre_funcion(parámetros) 1.2.3 Aplicaciones en el cálculo de cantidades de material El cálculo de las cantidades de material en un trabajo que consiste en estimar la totalidad de materiales necesarios para realizar el proyecto constructivo u obra, como ya se ha mencionado esta actividad es de gran importancia no solo para la correcta ejecución del presupuesto sino para el proceso de la obra. Es instrumento básico para revisiones, confrontaciones y actualización del presupuesto. Excel es la herramienta más utilizada en el campo de las construcciones civiles para ejecutar el cálculo simplificado de cantidades de material. El fácil manejo de la hoja de cálculo de Ms Excel ha generado un sustancial interés en el manejo de este software. 11 Comúnmente se observa cómo se utiliza Ms Excel para el procesamiento de áreas, volúmenes, etc. En la tabla siguiente se presenta un formato de cálculo de cantidad de acero, suponiendo el caso del análisis de cantidad de hierro para un elemento estructural como el siguiente: Fig. 3.2 Detalle plano de despiece de acero B A .135 V-207 Sec=50x50 Es 1 2#625 3#588
[email protected] [email protected] 2#625 .42 .42
[email protected] 5#588 42#3 L=1.95m Una viga de forma y cuantías muy similares a cualquier elemento que pudiese diseñarse en cualquier estructura. Si se necesitara cuantificar la cantidad de acero necesario para construir este elemento, deberían analizarse lo siguiente: • • La viga tiene cinco cuantías de acero (2#625, 3#588, 2#625, 5#588, 42#3 L=1.95m) Cada cuantía de acero consta de tres datos específicos: Fig. 3.3 Referencia de despiece REFERENCIA DE DESPIECES Cantidad de varillas Ø de varillas 4#630 Long. de las varillas en dm. 30 dm = 3.00 m. Nota: en la longitud se incluye el gancho. Si se decidiese cuantificar el acero con ayuda de una hoja de cálculo, es claro que de entrada se deben introducir 5x3= 15 datos sin mencionar otros como Nombre, Localización, etc. Seguidamente se procederá a programar la hoja de cálculo para llegar al valor buscado. Así mismo se repetirá el procedimiento por la cantidad de elementos estructurales para este caso vigas a los cuales se desee analizar la cantidad de acero. 12 Tabla 3.2 Formato común de análisis de cantidad de acero COLUMNAS BLOQUE 2 Solicitud segundo pedido: 12/10/07 CANTIDAD (un) CANTIDAD TOTAL (un) LONGITUD DE BARRA (m) PESO (Kg/ml) ELEMENTO REF. FIGURA PESO TOTAL (Kg) A-6 A-7 COLUMNAS A-5 A-8 B-5 B-5' B-6 B-7 B-7' B-8 8 #5 8 #6 8 #5 8 #5 8 #5 90 #3 180 #3 8 #5 8 #5 8 #5 8 #5 8 #5 90 #3 180 #3 16 16 16 16 16 180 360 64 64 64 64 64 720 1440 #5 #6 #5 #5 #5 #3 #3 #5 #5 #5 #5 #5 #3 #3 4,00 7,00 7,50 3,00 6,00 1,95 0,71 4,00 7,00 7,50 3,00 6,00 1,95 0,71 1,552 2,235 1,552 1,552 1,552 0,56 0,56 1,552 1,552 1,552 1,552 1,552 0,56 0,56 99,3 250,3 186,2 74,5 149,0 196,6 143,1 397,3 695,3 745,0 298,0 596,0 786,2 572,5 3490,9 1698,5 REFUERZO DE 60000 PSI REFUERZO DE 37000 PSI Tomando una vista de la misma tabla en modo auditoría de fórmulas, tenemos: Tabla 3.3 Formulación común de hoja de cálculo para análisis de cantidad de acero COLUMNAS BLOQUE 2 Solicitud segundo pedido: 12/10/07 CANTIDAD (un) CANTIDAD TOTAL (un) LONGITUD DE BARRA (m) ELEMENTO REF. FIGURA PESO (Kg/ml) PESO TOTAL (Kg) 8 8 A-6 A-7 8 8 COLUMNAS #5 #6 #5 #5 #5 #3 #3 #5 #5 #5 #5 #5 #3 #3 =E7*2 =E8*2 =E9*2 =E10*2 =E11*2 =E12*2 =E13*2 =E14*8 =E15*8 =E16*8 =E17*8 =E18*8 =E19*8 =E20*8 #5 #6 #5 #5 #5 #3 #3 #5 #5 #5 #5 #5 #3 #3 4 7 7,5 3 6 1,95 0,71 4 7 7,5 3 6 1,95 0,71 1,552 2,235 1,552 1,552 1,552 0,56 0,56 1,552 1,552 1,552 1,552 1,552 0,56 0,56 =G7*I7*J7 =G8*I8*J8 =G9*I9*J9 =G10*I10*J10 =G11*I11*J11 =G12*I12*J12 =G13*I13*J13 =G14*I14*J14 =G15*I15*J15 =G16*I16*J16 =G17*I17*J17 =G18*I18*J18 =G19*I19*J19 =G20*I20*J20 A-5 A-8 B-5 B-5' B-6 B-7 B-7' B-8 8 90 180 8 8 8 8 8 90 180 REFUERZO DE 60000 PSI REFUERZO DE 37000 PSI =K7+K8+K9+K10+K =K12+K13+K19+K2 13 Se pueden observar las fórmulas escritas para determinar las cantidades totales de barras y el peso total de las barras. Haciendo un análisis de la estructura de la tabla, es posible deducir que el trabajo de estructuración es muy simple, pero el trabajo de digitación de datos se vuelve tedioso y complejo por razones como las siguientes: • • Cada columna puede tener varillas de diferente diámetro, por tal razón el peso variara para cada uno. La cantidad de columnas que poseen el mismo número de varillas puede ser variable, entonces este dato debería colocarse un una celda aparte. Es evidente que en muchos casos las funciones básicas o nativas del programa no ofrecen los instrumentos necesarios para agilizar el trabajo o en otros casos el trabajo de introducir los datos a la hoja de cálculo se convierte en un procedimiento molesto y monótono. 1.3 MACROS EN MS EXCEL Para el trabajo automatizado de Excel es necesario tener claros los conceptos de macro y funciones personalizadas, a sí mismo como su ambiente de creación y control ya que estos elementos son las funciones más importantes para lograr uno óptimo y eficiente provecho de la programación en Excel. 1.3.1 ¿Qué es una macro? Una macro son un conjunto de instrucciones que sirven para automatizar procesos. Refiriéndonos a Excel, supongamos que realizamos frecuentemente la acción de seleccionar un rango para aplicarle negrita, cambio de fuente y centrado. En lugar de hacer estas acciones manualmente, se puede elaborar una macro e invocarla para que ejecute los tres procesos automáticamente las macros pueden efectuar proceso mucho más rápidos que una persona. Las macros pueden ser muy simples o extremadamente complejas. Incluso pueden interactuar, es decir se pueden escribir macros que soliciten informacional usuario y luego actuar de acuerdo a dicha información. Hay dos formas de crear una macro: Se puede grabar con ayuda de la grabadora de macos de Excel o se puede escribir cada una de las instrucciones en el modulo de Visual Basic. El uso de la grabadora de macros es muy sencillo y la información de uso se localiza en cualquier manual de Ms Excel, por tal razón su importancia no es mucha en este trabajo ya que la utilidad de la programación de macros en Excel es totalmente explotada y podemos acceder a ella en cualquier libro de programación o manual de VBA en Excel. 14 1.3.2 Objetos, propiedades y métodos. A la hora de trabajar con macros en Excel, deben tenerse claros ciertos conceptos de lo que se llama programación orientada a objetos (OOP). No nos extenderemos demasiado sobre la OOP, pero si definiremos a continuación los conceptos de Objeto, Propiedades y Métodos. Objeto. Cuando en el mundo real nos referimos a objeto significa que hablamos de algo más o menos abstracto que puede ser cualquier cosa. Si decidimos concretar un poco más podemos referirnos a objetos coche, objetos silla, objetos casa, etc. En OOP, la generalización (o definición) de un objeto se llama Clase, así la clase coche seria como la representante de todos los coches del mundo, mientras que un objeto coche seria un coche en concreto. De momento, no definiremos ni estudiaremos las clases sino que nos concentraremos en los objetos, tenga en cuenta pero que cualquier objeto está definido por una clase. Cuando decimos que la clase coche representa a todos los coches del mundo significa que define como es un coche, cualquier coche. Dicho de otra forma y para aproximarnos a la definición informática, la clase coche define algo que tiene cuatro ruedas, un motor, un chasis,... entonces, cualquier objeto real de cuatro ruedas, un motor, un chasis,... es un objeto de la clase coche. Propiedades. Cualquier objeto tiene características o propiedades como por ejemplo el color, la forma, peso, medidas, etc. Estas propiedades se definen en la clase y luego se particularizan en cada objeto. Así, en la clase coche se podrían definir las propiedades Color, Ancho y Largo , luego al definir un objeto concreto como coche ya se particularizarían estas propiedades a, por ejemplo, Color = Rojo, Ancho = 2 metros y Largo = 3,5 metros. Métodos. La mayoría de objetos tienen comportamientos o realizan acciones, por ejemplo, una acción evidente de un objeto coche es el de moverse o lo que es lo mismo, trasladarse de un punto inicial a un punto final. Cualquier proceso que implica una acción o pauta de comportamiento por parte de un objeto se define en su clase para que luego pueda manifestarse en cualquiera de sus objetos. Así, en la clase coche se definirían en el método mover todos los procesos necesarios para llevarlo a cabo (los procesos para desplazar de un punto inicial a un punto final), luego cada objeto de la clase coche simplemente tendría que invocar este método p ara trasladarse de un punto inicial a un punto final, cualesquiera que fueran esos puntos. Repasemos a continuación todos estos conceptos pero ahora desde el punto de vista de algunos de los objetos que nos encontraremos en Excel como WorkSheet (Objeto hoja de cálculo) o Range (Objeto casilla o rango de casillas). 15 Un objeto Range está definido por una clase donde se definen sus propiedades, recordemos que una propiedad es una característica, modificable o no, de un objeto. Entre las propiedades de un objeto Range están Value , que contiene el valor de la casilla , Column y Row que contienen respectivamente la fila y la columna de la casilla, Font que contiene la fuente de los caracteres que muestra la casilla, etc. Range , como objeto, también tiene métodos, recordemos que los métodos sirven llevar a cabo una acción sobre un objeto. Por ejemplo el método Activate, hace activa una celda determinada, Clear, borra el contenido de una celda o rango de celdas, Copy, copia el contenido de la celda o rango de celdas en el portapapeles.2 1.3.3 Conjuntos. Un conjunto es una colección de objetos del mismo tipo, para los que conozcan algún lenguaje de programación es un array de objetos. Por ejemplo, dentro de un libro de trabajo puede existir más de una hoja (WorkSheet), todas las hojas de un libro de trabajo forman un conjunto, el conjunto WorkSheets. Cada elemento individual de un conjunto se referencia por un índice, de esta forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarán por WorkSheets(1), WorkSheets(2) y WorkSheets(3). 1.3.4 Objetos de Objetos. Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el coche, una de las propiedades del coche es el motor, y el motor es un objeto con propiedades como cubicaje, caballos, número de válvulas, etc. y métodos, como aumentar_revoluciones, coger_combustible, mover_pistones, etc. En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range tiene la propiedad Font que es también un objeto y Font tiene la propiedad Bold (negrita). Tenga esto muy presente ya que utilizaremos frecuentemente Propiedades de un objeto que serán también Objetos. Dicho de otra forma, hay propiedades que devuelven objetos, por ejemplo, la propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range. 2 , MACROS EN MS EXCELL, http://www.sicem.biz/docs/tutoriales/excel/MacrosEnExcel.PDF/download 16 1.3.5 Programación Orientada a Objetos o Programación Basada en Objetos. Hay una sutil diferencia entre las definiciones del título. Programación orientada a Objetos, significa que el programador trabaja con objetos fabricados por él mismo, es decir, el programador es quien implementa las clases para luego crear objetos a partir de ellas. Lo que haremos nosotros, por el momento, será utilizar objetos ya definidos por la aplicación Excel (WorkSheets, Range,...) sin implementar ninguno de nuevo, por lo que en nuestro caso es más correcto hablar de programación basada en objetos. Observe que esta es una de las grandes ventajas de la OOP, utilizar objetos definidos por alguien sin tener que conocer nada sobre su implementación, sólo debemos conocer sus propiedades y métodos y utilizarlos de forma correcta. 1.4 EDITOR DE VISUAL BASIC. El editor de Visual Basic es la aplicación que se utiliza para construir las macros que interactuaran junto con los libros de trabajo. A continuación se preparara un archivo en el que se escribirán las primeras instrucciones en Visual Basic. Para entrar en el editor de Visual Basic, ejecute los pasos siguientes. 1. Active opción Herramientas/ Macro/ Editor de Visual Básic (en office 2003 y anteriores)3 En office 2007 se debe activar la barra de programador activándola en /Opciones de Excel / Opciones Principales.. Activar casilla “Mostrar Ficha de Programador”. En la nueva ficha del panel de trabajo Clic en botón “Visual Basic” En cualquier versión de Office se abrirá una ventana como la siguiente: 3 MACROS EN MS EXCELL, 17 Fig. 3.4 Vista general del Editor de Visual Basic 1.4.1 Módulos Un modulo es un conjunto de declaraciones y procedimientos que realizan diferentes tareas independientemente una de otras, pero también pueden actuar en conjunto. Dentro de estos módulos es donde se digitan las macros que deseamos crear. Para insertar un módulo active opción del menú Insertar/ Módulo. Se activará una nueva ventana. Fig. 3.5 Vista de espacio de trabajo en editor de Visual Basic Espacio de trabajo del modulo 1.4.2 Procedimientos Insertar un procedimiento. Un procedimiento es un bloque de instrucciones de código que sirven para llevar a cabo alguna tarea específica. Un procedimiento empieza siempre con la instrucción Sub Nombre_Procedimiento 18 Y termina con la instrucción End Sub. A continuación crearemos un procedimiento para poner el texto "Hola" en la casilla A1. Ejemplo Sub Primero Range("A1").Value = "Hola" End Sub Observando el código. Range("A1").Value="Hola" En esta línea se está indicando que trabajamos con un objeto Range. Para indicarle que nos referimos a la casilla A1, encerramos entre paréntesis esta referencia (más adelante verá otra forma de referirnos a las casillas). De este objeto, indicamos que queremos establecer un nuevo valor para la propiedad Value, observe que para separar el objeto de su propiedad utilizamos la notación punto. Recuerde que el conjunto Range es un objeto que pende del objeto WorkSheets, así por ejemplo el siguiente código haría lo mismo que el anterior. WorkSheets(1).Range("A1").Value = "Hola" 1.4.3 Ejecutar un procedimiento o función. Pruebe ejecutar el primer procedimiento de ejemplo. 1. Sitúe el cursor dentro del procedimiento. 2. Active opción de la barra de menús Ejecutar/ Ejecutar Sub Userform. También puede hacer clic sobre el botón o pulsar la tecla F5. Ejecutar el procedimiento desde la hoja de cálculo. Debe estar en una hoja, no en el editor de Visual Basic 1. Active opción de la barra de menús Herramientas/ Macro/ Macros. Se despliega una ventana que muestra una lista dónde estás todas las macros incluidas en el libro de trabajo. 2. Seleccione la macro de la lista y pulse sobre el botón Ejecutar. 19 1.5 FUNCIONES PERSONALIZADAS Una función es lo mismo que un procedimiento con la salvedad que este devuelve un valor al procedimiento o función que lo llama. Vea el siguiente ejemplo, es una función muy sencilla ya que simplemente suma dos números y devuelve el resultado. Sub Ejemplo_34() Dim x As Integer Dim n1 As Integer, n2 As Integer X = Suma(5, 5) n1= Val ( InputBox("Entrar un número : ", "Entrada")) n2= Val ( InputBox("Entrar otro número : ", "Entrada")) X= suma(n1,n2) ActiveCell.Value = Suma(ActiveSheet.Range("A1").Value ActiveSheet.Range("A2").Value) X = Suma(5, 4) + Suma (n1, n2) End Sub Function Suma(V1 As Integer, V2 As Integer) As Integer ‘función que suma dos argumentos de tipo integer Dim Total As Integer Total = V1 + V2 Suma = Total End Function Obsérvese la sintaxis de la cabecera de función, Function Suma(V1 As Integer, V2 As Integer) As Intege r La estructura general seria, Function Nombre_Funcion(par1 As Tipo, par2 As Tipo,..., parN As Tipo) As Tipo. La sintaxis es similar a la cabecera de un procedimiento, sólo que una función tiene tipo, esto tiene su lógica, ya que una función devuelve un valor, ese valor será de un tipo determinado. Así, en nuestro ejemplo de Function Suma, esta función es de tipo Integer, o dicho de otra manera, la función ejecuta sus sentencias y devuelve un valor hacia el procedimiento o la función que la llamó, el valor devuelto se establece igualando el nombre de la función a algo, Nombre_Función = .... En el ejemplo de Function Suma, Suma = Total Observe también la sintaxis de la llamada a la función, en el ejemplo hemos utilizado unas cuantas formas de llamarla, lo que debe tener siempre presente es que en cualquier expresión aritmética o de cálculo, el ordenador realiza un mínimo de dos operaciones, una de cálculo y otra de asignación. Por ejemplo, A= B+C 20 , El ordenador primero calcula el resultado de sumar B+C luego asigna ese resultado a la variable A. En Cualquier llamada a una función, cojamos por caso, X= suma(n1,n2) Primero se ejecutan todas las sentencias de la función Suma, luego se asigna el cálculo de la función a la variable X. La sentencia “‘función que suma dos argumentos de tipo integer” se le llama anotación, estas sentencias no hacen parte del proceso del código de la función, estas se utilizan como medida de explicación del código. Todas las anotaciones deben ser precedidas por el signo comilla simple ( ‘ ). 1.6 APLICACIONES DE FUNCIONES CANTIDADES DE MATERIAL PERSONALIZAS AL CÁLCULO DE El manejo de funciones personalizas en Excel, puede ser la herramienta más útil y de mas fácil manejo. Su aplicación en el cálculo de cantidades de obra es bien importante, mas aun en cualquier campo de la ingeniería su utilidad es una herramienta de gran ventaja, comodidad y eficiencia. Para explicar algunas de las utilidades se tomara como base el trabajo realizado en la pasantía, en el colegio Simón Bolívar. Para esto se presenta la siguiente tabla: Tabal 3.4 Formato de Tabla análisis de cuantías en Excel con ayuda de macros A lo que se pretende llegar es explicar la manera como minimizar el trabajo que tiene que realizar el ingeniero o encargado del cálculo de la cantidad de material. A continuación se presenta como quedaría la tabla mostrando sus funciones. 21 Tabla 3.5 Utilización de Fórmulas definidas por el usuario en Excel Como se puede observar la formulación de la tabla se realizo con funciones personalizadas, y también es de notar que la mayoría es las funciones son dependientes de un único dato que es el refuerzo o cuantía digitado en la columna F. expresado como indica la figura 3.3. Esto significa un gran ahorro de tiempo ya que la persona encargada del cálculo de las cantidades solo debería digitar cada una de las referencias del despiece y luego copiar su formula a todas las celdas. Para explicar las funciones se tomaran una por una, analizando su estructura, es de aclarar que no se realizara un análisis detallado de cada uno de los procedimientos ya que no es el fin de este trabajo, sino mostrar la utilidad de su manejo. 1.6.1 Función NoBarras El objetivo de esta función es devolver la cantidad de varillas consignadas en la referencia del despiece, es decir: REFERENCIA DE DESPIECES Cantidad de varillas Ø de varillas 4#630 Long. de las varillas en dm. 30 dm = 3.00 m. Nota: en la longitud se incluye el gancho. El proceso que realiza la función se puede resumir de la siguiente manera: a. Capta el argumento (Referencia de despiece) b. Busca el valor de cantidad de varillas c. Presenta el valor en la celda 22 El código en VBA quedará de la siguiente manera4: Fig. 3.6 Función NoBarras Como se puede observar el código que procesa la función es muy sencillo, y procesa lo antes mencionado. 1.6.2 Función BarraNo El objetivo de esta función es devolver el diámetro de la barra, es decir: REFERENCIA DE DESPIECES Cantidad de varillas Ø de varillas 4#630 Long. de las varillas en dm. 30 dm = 3.00 m. Nota: en la longitud se incluye el gancho. El proceso que realiza la función se puede resumir de la siguiente manera: a. Capta el argumento (Referencia de despiece) b. Busca el valor del numero de la varilla c. Presenta el valor en la celda El código en VBA quedaría de la siguiente manera: Fig. 3.7 Función BarraNo 4 El código es muy variable, pueden existir infinidad de formas de escribir la misma función. 23 1.6.3 Función PesoBarra Esta función no depende directamente de la referencia de despiece, pues toma como argumento el diámetro de la barra. El objetivo de esta función es devolver el peso de la barra por metro lineal, es decir: a. Capta el argumento (Diámetro de barra) b. Busca el valor del peso para este diámetro de barra entre unos casos predefinidos. c. Presenta el valor en la celda Fig. 3.8 Función PesoBarra 24 1.6.4 Función LgBarras El objetivo de esta función es devolver el diámetro de la barra, es decir: REFERENCIA DE DESPIECES Cantidad de varillas Ø de varillas 4#630 Long. de las varillas en dm. 30 dm = 3.00 m. Nota: en la longitud se incluye el gancho. El proceso que realiza la función se puede resumir de la siguiente manera: a. Capta el argumento (Referencia de despiece) b. Busca el valor de longitud de varilla numero de la varilla c. Presenta el valor en la celda El código de la función es el siguiente Fig. 3.9 Función LgBarras Las funciones expuestas básicamente están compuestas de tres líneas de código, esto muestra la brevedad en la escritura de una función. Es comprensible que para procedimientos as mas estructurados el código se vuelve más extenso y la necesidad de conocer ciertas propiedades y funciones propias del Excel y VBA se hace más imprescindible. 25 1.7 TRABAJAR CON FUNCIONES PERSONALIZADAS Como ya se explico la escritura y edición de las funciones personalizadas para Excel se realiza en los módulos de VBA. Estas funciones pueden ser utilizadas tanto en la hoja de cálculo como en Visual Basic; es decir las funciones se pueden llamar desde las celdas de Excel para presentar los datos en la hoja de cálculo (Ejemplos vistos anteriormente) o también se pueden utilizar en el mismo ambiente VB de acuerdo a la necesidad. Para insertar las funciones en la hoja de cálculo se debe seguir el siguiente procedimiento: a. Clic en el icono insertar función de la barra de fórmulas b. Clic en funciones definidas por el usuario c. Se selecciona la función buscada Funciones definidas en modulo VBA d. Seleccionar celda donde se digito la cuantía y aceptar 26 Un ejemplo de utilización de las funciones dentro de un procedimiento o dentro de otra función podría presentarse si se deseara calcular el peso de la varillas poniendo como argumento la referencia de despiece, ya que se debería llamar la función NoBarra para obtener el diámetro de la barra y luego proceder a llamar la función PesoBarra. De la siguiente manera: Fig. 3.10 Función PesoBarra2 27 2 AUTOCAD Autocad es el software mas comercializado en la creación, tratamiento y edición de planos arquitectónicos y de ingeniería. Este hecho ha generado que la documentación base para el cálculo de materiales se presente en medio digital utilizando este formato. Como se ha observado en el capitulo anterior la programación de funciones personalizadas en Excel es una herramienta bastante útil para tratar el trabajo de cálculo de cantidades de material, más específicamente el cálculo de cantidades de acero. Minimizando el trabajo del calculista al simple hecho de insertar las cuantías de acero en una lista de forma ordenada según los planos estructurales. En este capítulo se pretende mostrar un método para permitir que el calculista obtenga las cuantías de acero directamente de los planos de Autocad, proceso que eliminaría la probabilidad de error que pudiese tener el digitador al insertar cada una de las cuantías en las celdas de Excel. 2.1 PRESENTACIÓN GENERAL DE LA TECNOLOGÍA ACTIVEX DE AUTOCAD Con AutoCAD ActiveX puede manipular AutoCAD mediante la programación desde dentro o fuera de AutoCAD. Este método consiste en exponer objetos de AutoCAD al “mundo exterior.” Una vez expuestos, se facilita el acceso a ellos desde numerosos entornos y lenguajes de programación, así como desde aplicaciones tales como Microsoft Word VBA o Excel VBA. La inclusión de una interfaz de ActiveX para AutoCAD ofrece dos ventajas: • El acceso programático a los dibujos de AutoCAD puede realizarse desde muchos otros entornos de programación. Antes de ActiveX Automation, los desarrolladores debían limitarse a una interfaz AutoLISP o C++. • La posibilidad de compartir información con otras aplicaciones para Windows, como Microsoft Excel y Word, se ha facilitado enormemente. Los objetos constituyen el bloque de integración principal de todas las aplicaciones ActiveX. Cada objeto expuesto representa un componente concreto de AutoCAD. Existen multitud de tipos de objetos diferentes en la interfaz de ActiveX de AutoCAD. Por ejemplo: • Los elementos gráficos como las líneas, los arcos, el texto y las cotas son objetos. • Los parámetros de estilo como el tipo de línea y el estilo de cota son objetos. • Las estructuras de organización como las capas, los grupos y los bloques son objetos. • Las pantallas de dibujo, como vistas y ventanas gráficas, son objetos. • Se consideran objetos incluso el dibujo y la aplicación AutoCAD.5 5 Ayuda del desarrollador de AutoCAD 2009, ActiveX and VBA Reference 28 2.2 PRESENTACIÓN GENERAL DE LA INTERFAZ ENTRE AUTOCAD Y VISUAL BASIC PARA APLICACIONES (VBA) Microsoft VBA es un entorno de programación orientado a objetos, concebido para suministrar funciones avanzadas de desarrollo similares a las de Visual Basic 6 (VB). La diferencia principal entre VBA y VB es que el primero se ejecuta en el mismo espacio de proceso que AutoCAD, lo que proporciona un entorno de programación muy rápida y compatible con AutoCAD. VBA permite también la integración con otras aplicaciones que admiten VBA. Lo que significa que AutoCAD puede, mediante las bibliotecas de objetos de otras aplicaciones, funcionar como controlador de automatización de otras aplicaciones como Microsoft Word o Excel. Las ediciones de desarrollo independientes de Visual Basic 6, que deben adquirirse por separado, complementan a VBA de AutoCAD con componentes adicionales, como un motor de base de datos externo y funciones de generación de informes. La inclusión de ActiveX para AutoCAD ofrece cuatro ventajas: • • • • VBA y su entorno resultan fáciles de aprender y de usar. VBA se ejecuta junto con AutoCAD. Esto se traduce en una ejecución de programa muy rápida. La construcción de cuadros de diálogos es rápida y eficaz. Esto permite a los desarrolladores realizar prototipos de aplicaciones y recibir información sobre diseños de forma rápida. Los proyectos pueden ser independientes o estar incrustados en los dibujos. Esta opción ofrece a los desarrolladores una gran flexibilidad para la distribución de sus aplicaciones. 2.3 USO COMBINADO DE ACTIVEX Y VBA EN AUTOCAD La interfaz de ActiveX/VBA de AutoCAD presenta varias ventajas sobre otros entornos API de AutoCAD: Velocidad. Cuando se realiza una ejecución en proceso con VBA, las aplicaciones de ActiveX son más rápidas que las de AutoLISP. Facilidad de uso. El lenguaje de programación y el entorno de desarrollo son fáciles de usar y vienen instalados con AutoCAD. Funcionamiento conjunto con Windows. ActiveX y VBA están diseñados para su uso con otras aplicaciones de Windows y constituyen una excelente vía para la comunicación de información entre distintas aplicaciones. Rápida creación de prototipos. La capacidad de VBA para un rápido desarrollo de interfaces ofrece un entorno óptimo para la creación de aplicaciones prototipo, incluso si dichas aplicaciones en última instancia deberán ser desarrolladas en otro lenguaje. 29 Base para programadores. La tecnología VBA y ActiveX de AutoCAD proporciona a los programadores de Visual Basic 6 la capacidad de personalizar AutoCAD y de desarrollar aplicaciones compatibles. 2.4 EL EDITOR DE VBA EN AUTOCAD Para acceder al editor de VBA en Autocad este debe instalarse al momento de instalar Autocad en el equipo. Una vez este se ha instalado se puede acceder al editor ejecutando el comando _vbaman desde la barra de comandos o desde el menú Heramientas\macros\Adm.VBA. El espacio y método de trabajo en el editor de VBA de Autocad es igual al de Excel, por tal razón no se retomara eso. 2.5 ESTRUCTURAS DE OBJETOS DE AUTOCAD En visual Basic es posible definir nuevos objetos de los que en principio este lenguaje no dispone. Esto es precisamente lo que VBA ha hecho, creando toda una definición estructurada de objetos de Autocad, con el fin de que se puedan manejar desde VBA. Esta estructura define entidades individuales de dibujo, como circulo, línea, polilinea, solido, etc. Además cada uno de los objetos dispone de su conjunto de propiedades, como son el color, la capa, el tipo de línea, etc. Y otras propiedades especificas de cada elemento como el radio, diámetro, longitud, etc. Para el trabajo de crear una macro que tome las cuantías de acero desde los dibujos de Autocad y las consigne en una hoja de cálculo de Excel, se estudiara la entidad Text, ya que lo dibujos del despiece del acero representan con objetos de texto las cuantías dadas. Algunas de las propiedades de esta entidad son: Application, Color , EntityName, EntityType, Handle , Height, HorizontaiAlignment, InsertionPoint, Layer, Linetype, LinetypeScale, Normal, ObjectID, ObliqueAngle, Rotation, ScaleFactor, StyleName, TextAlignmentPoint, TextGenerationFIag, TextString, Thickness, Vertical Alignment, Visible. De las cuales la propiedad TextString es la que obtiene y asigna la cadena de texto que el objeto representa en el dibujo.6 2.6 VBA Y AUTOCAD EN LA OBTENCIÓN DE CANTIDADES DE ACERO Para una mejor comprensión de la estructura de programación de la macro se presentaran cada una de las funciones y luego se explicaran en forma breve. 6 Ayuda del desarrollador de AutoCAD 2009 30 Fig. 4.1 Función IniCantAcero La macro IniCantAcero es el procedimiento principal, es de de este se llaman subrutinas que ejecutan un código de funciones específica, el código de la macro está conformado por tres partes principales que se pueden clasificar así: • • • • Inicio de aplicación Ms Excel Solicitud al usuario de datos y cuantías de elementos Guardado y cierre de aplicación Ms Excel Terminación de procedimiento 2.6.1 Inicio de aplicación Ms Excel (IniExcel) El primer procedimiento que llama la macro general inicia Ms Excel, es decir abre un libro nuevo de Ms Excel. El código que ejecuta es el siguiente: 31 Fig. 4.2 Función IniExel 2.6.2 Solicitud al usuario de datos y cuantías El siguiente código, solicita al usuario los datos necesarios a pasar a Excel, para tener una referencia de los datos que debe solicitar la macro se debe recurrir al estilo de dibujo del despiece. Fig. 4.3 Modelo de despiece C 1.00 2.00 3.00 4.00 B 1.00 2.00 3.00 4.00 5.00 6.00 7.00 A .135 2#665 V-007A 13#
[email protected] 10#
[email protected] 2#782 2#7120 10#
[email protected] 23#
[email protected] 10#
[email protected] .42 .32 2#727 Sec=40x50 Es 1 1.00 2.00 3.00 4#690 4.00 1.00 2.00 3.00 4.00 4#654 66#3 L=1.75m 5.00 6.00 7.00 En la viga modelo se puede observar que el nivel de detalle del dibujo es bueno lo cual permite reconocer fácilmente los datos que se necesitan. Entre estos tenemos: Nombre de viga, pide al usuario que selecciones el objeto texto que contiene el nombre de viga y almacena en la propiedad Text en la variable NombreViga. Sección de Viga, Pide al usuario que digite la sección de la viga y la almacena en la variable Sección. 32 Cantidad de vigas, En algunos despieces cuando se deben dibujar varios elementos iguales se opta por dibujar uno solo y especificar la cantidad de elementos. Descripción, la descripción es un dato opcional que pedirá la macro para que el usuario digite aspectos que considere necesarios, por ejemplo la ubicación de elemento según el sistema de ejes u otros. Cuantía de refuerzo superior e inferior, si se desea tener en detalle la ubicación del acero de refuerzo se puede hacer que la macro pida seleccionar los objetos texto que contienen las cuantías de acero de refuerzo superior e inferior. Después de pedir al usuario que seleccione las cuantías de acero la macro ejecuta la subrutina texecxel que se encarga de almacenar el conjunto de selección en una variable para después tomar cada objeto almacenado en el conjunto y obtener su propiedad Text para pasarla a la hoja de cálculo. Este procedimiento se presentara posteriormente. Estribos, otro dato fundamental es la cantidad de estribos, es posible que el dibujo nos presente la cantidad total de estribos y su longitud (Caso ejemplo), en tal caso el usuario seleccionara un solo objeto texto, si la condición es diferente deberá estudiarse tal caso para que la macro pase a Excel la información suficiente para calcular la longitud y números de flejes. De igual manera que para las cuantías de refuerzo superior e inferior el procedimiento ejecuta el procedimiento texecxel para que realice el procedimiento antes explicado. • Manejo de conjunto de selección (Procedimiento texecxel) De alguna manera la macro más importante es texecxel ya que es esta la que realiza el trabajo objetivo de este estudio, es decir: capta los objetos texto del dibujo, los almacena en una variable de donde los extrae ordenada y sucesivamente para obtener su propiedad text y luego pasa a consignarla en la hoja de cálculo de forma sucesiva por filas. La macro y una síntesis del funcionamiento de cada una de las líneas del código se presentan a continuación: 33 Fig. 4.4 Función TexExcel (parte 1) Fig. 4.5 Función TexExcel (parte 2) Como se puede observar la macro ejecuta en cada línea el proceso antes expuesto. Iteración del código sobre elementos siguientes Según el procedimiento expuesto el trabajo realizado es aplicable para pasar las cuantías de la cantidad de acero para un elemento, en este caso una viga. Pero como es lógico este proceso de repetirse hasta lograr pasar todas las cuantías de los elementos a 34 analizar. Es esta la razón de la instrucción Do...Loop la cual repite los anteriores procedimientos hasta que el usuario lo decida, por tal fin se ejecuta el subproceso Continuax , el cual pregunta al usuario si desea procesar un elemento siguiente de la siguiente forma: • • Le pregunta al usuario si desea o no continuar con un siguiente elemento. Y guarda la respuesta en una variable. La instrucción Loop While termina o empieza de nuevo las instrucciones. Fig. 4.6 Función Continuax 2.6.3 Guardado y cierre de aplicación Ms Excel Si el usuario decide terminar el procedimiento debe pulsar “N” ante la confirmación de un siguiente elemento, seguidamente el bucle Do … Loop se terminara y se ejecutara la instrucción CierraExcel, la cual guarda los cambios en el libro y cierra Excel. Fig. 4.7 Función CierraExcel 35 En este punto se debe haber creado un libro de Excel con el nombre asignado en la carpeta mis documentos. 2.6.4 Terminación de la macro Al terminar el proceso se mostrara un mensaje de guardado y terminación del proceso correctamente para informar al usuario. Como complemento se adiciono un formulario de presentación de información del autor, El cual se ejecutara una vez terminado el procedimiento. Este no hace parte útil del proceso objetivo por tal razón no se expone su creación.7 El formulario se activa con la instrucción: About.Show La ejecución puesta en marcha de la macro en Autocad, se debe realizar según el procedimiento ya expuesto, sin embargo en el siguiente capítulo se presentara un ejemplo de aplicación del trabajo realizado. 7 Para más información acerca de formularios consultar Userform en manual de ayuda VBA 36 3 CALCULO DE CANTIDADES DE ACERO CON AYUDA DE MACROS En los anteriores capítulos se ha expuesto algunos procedimientos utilices para automatizar en gran medida el trabajo de cálculo de acero en obra. cada uno de los procedimientos basados en el lenguaje de programación Visual Basic se consideran ejemplos específicos para situaciones concretas del trabajo de cálculo de material; esto supone que en algunos casos los procedimientos deben ser ajustados a las necesidades particulares de cada usuario, generando así la necesidad de conocer el lenguaje de programación y todos sus elementos. En este capítulo se considerara un ejemplo de aplicación del trabajo antes realizado, se presentara una forma de trabajo que demostrara la eficiencia que puede aportar las macros escritas tanto para Excel como para Autocad. Para realizar el ejemplo se utilizara un juego de planos estructurales contenidos en formato digital que serán la base del cálculo. De los planos se exportara la información concerniente a las cuantías de acero a una hoja de cálculo, este trabajo se realizara con ayuda del procedimiento escrito en VBA de Autocad, seguidamente se trabajara en el libro donde se exportaron los datos utilizando las funciones creadas en Excel para estimar la cantidad de acero en la estructura. 3.1 PLANOS DE TRABAJO Los planos del despiece de la estructura son la base fundamental para el cálculo de las cantidades de acero de cualquier proyecto constructivo. En estos se consignan toda la información y los detalles constructivos de cada elemento a construir. Para realizar el ejemplo utilizaremos la plancha E-004 del juego de planos correspondiente al proyecto estructural del colegio Simón Bolívar, ya que realizando un trabajo de pasantía en este proyecto constructivo fue cómo surgió la idea de analizar la importancia de aplicar herramientas de programación para el cálculo de cantidades de material. En la plancha E-004 se consigna el detalle del despiece de vigas de cimentación bloques 1, 2 y 3 de la estructura del colegio Simón Bolívar. El plano se puede observar en el Anexo 1 3.2 PASAR CUANTÍAS DE ACERO DESDE AUTOCAD A EXCEL Como se menciono anteriormente se pretende es demostrar la eficiencia que puede aportar la utilización adecuada de las herramientas que nos brinda Excel, Autocad y VBA para el cálculo de cantidades de material y más específicamente para el cálculo de cantidades de acero. Como es de suponerse el trabajo comienza en Autocad con la obtención de los detalles del despiece del acero. Teniendo esta información se procede a ejecutar la macro principal en el caso descrito anteriormente es la macro IniCantAcero, la cual inicia la siguiente ventana: 37 Fig. 5.1 Ejercicio ejemplo (Solicitud de nombre de Archivo) En la ventana anterior se presenta el ImputBox inicial que solicita al usuario un nombre para el archivo de Excel que se creara, en este caso lo llamaremos “Despiece de vigas de cimentación B1”. Haciendo clic en Aceptar se ejecutara un mensaje informando que debemos seleccionar el nombre de la viga o elemento. De la siguiente manera: Hacemos clic en aceptar. Seguidamente el cursor en Autocad cambiara a la forma de selección de objetos y en la ventana de comandos tendremos el mensaje “Designe Objetos:” para permitirnos poder seleccionar el nombre de la viga. Fig. 5.2 Ejercicio ejemplo (Solicitud de nombre de Elemento) 38 Se selecciona el objeto de texto V-001A y se oprime Enter para aceptar. El siguiente paso es atender las solicitudes de descripción, cantidad de unidades del elemento y sección del mismo, recuérdese que en la descripción el usuario debe colocar la información que considere necesaria en este caso colocaremos su ubicación según el sistema de ejes. Fig. 5.3 Ejercicio ejemplo (Solicitud descripción de elemento) Fig. 5.4 Ejercicio ejemplo (Solicitud cantidad de elementos) 39 Fig. 5.5 Ejercicio ejemplo (Solicitud de sección de elemento) Los anteriores datos pueden colocarse en la barra de comando o en el cuadro flotante si se tiene activado. El siguiente paso es seleccionar las cuantías de refuerzo superior, para informarnos esto la macro presenta el siguiente mensaje: Al aceptar se activa el cursor de selección de objetos, con el cual se seleccionan la o las cuantías que tenga el elemento. Fig. 6 Ejercicio ejemplo (Solicitud de cuantías) 40 Al seleccionar cada elemento la ventana de comandos informa el número de elementos encontrados, esto permite tener alguna seguridad de la totalidad de objetos que se han seleccionado. Al terminar de seleccionar todos los objetos se pulsa ENTER para aceptar. El proceso anterior se repite para la selección de las cuantías de refuerzo inferior y los estribos. Después de seleccionar los estribos la macro pregunta al usuario si desea seguir con otro elemento o terminar el procedimiento. En este caso se pulsara S hasta terminar de seleccionar todas las vigas. Fig. 5.7 Ejercicio ejemplo () Al pulsar S el procedimiento anterior se repetirá para cada elemento hasta que se desee terminar el proceso pulsando N, caso en el cual se tendrá el siguiente mensaje: Fig. 5.8 Ejercicio ejemplo (Final de proceso) Seguidamente el formulario.. 41 Fig. 5.9 Ejercicio ejemplo (Userform de salida) Al terminar la ejecución de la macro debe haberse creado un archivo con el nombre “Despiece de vigas de cimentación B1” en la carpeta mis documentos de la siguiente manera: Fig. 5.10 Ejercicio ejemplo (Localización de archivo creado en Autocad) Al abrir el archivo tendremos lo siguiente: 42 Fig. 5.11 Ejercicio ejemplo (Descripción de archivo creado en Autocad) Columna de nombres de elementos Columna de tipo de refuerzo Descripción de elementos Columna de cantidad de elementos Secciones de elementos Columna de cuantías de elementos 3.3 TRABAJO CON LOS DATOS EN EXCEL Lo siguiente se considera como trabajo en la hoja de cálculo, ahí se procederá a titular las columnas, agregar un formato a la tabla y finalmente aplicar las funciones personalizadas antes creadas para obtener los resultados deseados. • • Como primer paso se nombraran las columnas Según el orden aplicamos las funciones personalizadas. 43 Fig. 5.12 Ejercicio ejemplo (Aplicación de Función NoBarras) Detalle la barra de fórmulas donde se aplica la función personaliza =NoBarras para determinar la cantidad de barras. El siguiente paso es aplicar las funciones BarraNo y PesoBarra o PesoBarra2 de la siguiente manera Fig. 5.13 Ejercicio ejemplo (Aplicación de Función BarraNo) Fig. 5.14 Ejercicio ejemplo (Aplicación Función PesoBarra) El siguiente paso es sacar la longitud de las barras que representa cada cuantía. En este caso es evidente que la función personalizada =LgBarras() no será útil para todas la cuantías ya que el formato de la cuantía de flejes es diferente, por tanto la función no devolverá un valor correcto. Nótese los errores en la figura siguiente: 44 Fig. 5.15 Ejercicio ejemplo (Aplicación Función LgBarras) Para solucionar este problema pueden existir varias soluciones, particularmente se realizara otra función personalizada para extraer este valor. Otro detalle importante es que la función =LgBarras() devuelve los valores tal cual están en la cuantía es decir en decímetros, por tal razón este valor debe dividirse entre 10. Fig. 5.16 Ejercicio ejemplo (Aplicación Función LgFlejes) Para hacer mas automático el trabajo las funciones =LgFlejes() y =LgBarras() podrían colocarse dentro de una condicional8 que dependerá del tipo de refuerzo. 8 Para mayor entendimiento de la utilización de la función condicional =Si(), remitirse a la ayuda de Excel. 45 Fig. 5.17 Ejercicio ejemplo (Utilización de funciones lógicas) Por último se procede a calcular la longitud total del acero que será la longitud de las barras afectado por el número de barras y por la cantidad de elementos., seguidamente se calculara el peso de cada cuantía. Fig. 5.18 Ejercicio ejemplo El mismo proceso es aplicable a cualquier elemento que tenga características de dibujo similares. Esto significa que existen cambios en la notación de las cuantías, se deben estructurar las funciones a cada cambio. Hasta este punto se ha logrado explicar cómo crear y utilizar de forma adecuada procedimientos y funciones creados en VBA como complemento para un trabajo optimo en Ms Excel y Autocad. El manejo posterior de los datos obtenidos es recomendable que se analicen u/o resuman con ayuda de tablas dinámicas9. De esta manera podemos sintetizar la información de las siguientes maneras: 9 Las tablas dinámicas es una herramienta que tiene Excel que permite el manejo adecuado de datos, para más información referenciar la ayuda de Ms Excel. 46 • Resumen de totales de acero por vigas y total general • Resumen total de acero por diámetro de barra 47 • Resumen ubicación de elementos Las anteriores son algunas de las posibilidades de organización de tablas que la herramienta Tablas Dinámicas ofrece. El estilo y formato dependerá de la necesidad o de los datos que se deseen presentar. 48 4 CONCLUSIONES 1. Según lo visto se deduce que el manejo adecuado de herramientas informáticas es un instrumento clave para aumentar la eficiencia en el trabajo del cálculo de cantidades de material. 2. Durante la realización de trabajo investigativo se pudo observar que el manejo de herramientas de programación en VBA, no solo es útil en el tratamiento de cálculo de cantidades de material sino también para cualquier trabajo de ingeniería. 3. La investigación del trabajo herramientas avanzadas de Ms Excel demuestra que la mayoría de personas que utilizan esta hoja de cálculo, no aprovecha todo el potencial de trabajo que esta ofrece. 4. Es importante que los profesionales se interesen personalmente por el manejo de herramientas informáticas para aumentar su potencial de trabajo. 5. El manejo de software como herramienta de trabajo debe ser supervisada estrictamente por el personal profesional, ya que cualquier error de cálculo puede ser causa de una mala interpretación del los documentos iníciales de trabajo. 6. El manejo de lenguajes de programación como Visual Basic, debe convertirse en un paso obligado para todo profesional, considerando la importancia o utilidad que representa para el trabajo cotidiano y los avances tecnológicos de la fecha. 7. El desarrollo de software para ingeniería es un campo que se ha preocupado por innovar en herramientas para el trabajo general de cada profesional, es decisión de los profesionales buscar soluciones a situaciones puntuales de trabajo cotidiano. 49 5 BIBLIOGRAFÍA DOGGE, Mark y STINGSON Crain: Guía Completa de Microsoft Excel 2002. 1ra ed. España: McGraw Hill, 2002. 840 p. 9 788448 123415. ISBN 84-481-3241-6 HANSEN Steven M: Excel 2003 Programming with VBA. 1ra ed. Londres: Sybex, 2004.606 p. ISBN: 0-7821-4281-8 NIETO DIAS, Humberto: Presupuesto de obra. 1ra ed. Colombia: Escala. 70 p. JACOBSON Reed: Programación con Microsoft Excel 2002 Macros y Visual Basic para aplicaciones. 1ra ed. Madrid España: McGraw Hill, 2002. 540 p. ISBN 84-481-32483-3 TAJADURA ZAPIRAIN, Jose Antonio; MANSO IRURZUN, Begoña y LOPEZ FERNANDEZ, Javier: Programación con Autocad, 1ra ed, España: : McGraw Hill, 1999. ISBN 84-481-2123-6 WALKENBACH John, Excel 2003 Bible, 1ra ed. Indianapolis U.S.A: Wiley Publishing, 2003. p. 677-785 5.1 INFOGRAFIA SANCHEZ, Jorge. Funciones de Excel: OnLine, 1999. http://www.jorgesanchez.net/ofimatica/index.html INSTITUTO NACIONAL DE ESTADÍSTICA E INFORMÁTICA, Como automatizar tareas con Excel Macros, [Online] ASENJO, Carlos: Macros en Excel. [Presentación en Línea. [España]. . s.f. 50 MACROS EN MS EXCELL, [En linea]. http://www.sicem.biz/docs/tutoriales/excel/MacrosEnExcel.PDF/download Guia Macros de Excel. [En linea]. http://www.4shared.com/get/41863441/16030256/Guia_Macros_de_Excel__wwwnewbiem anianet.html 51 6 RECOMENDACIONES Una buena bibliografía es importante para comenzar el desarrollo de procedimientos y/o funciones en Visual Basic. La Web es un medio con mucha información y ejemplos para iniciar en el mundo de la programación. Aunque Visual Basic es uno de los lenguajes de programación más sencillos y asequibles, se debe estar preparado para los continuos errores y/o fracasos en nuestros primeros intentos de programación. El interés personal en aprender a programar en Visual Basic, será la herramienta principal en nuestro auto aprendizaje. Al iniciar el trabajo de programar cualquier tarea se debe tener un pleno conocimiento de dicha tarea. “No puedo crear una función que sume dos números si no se que es sumar”. 52 7 ANEXOS 7.1 FUNCIONES EXCEL 53 54 7.2 PROCEDIMIENTO AUTOCAD 55 56 57