SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
CURSO DE PROGRAMACION
TEMARIO PROGRAMACION EXCEL FOR AUTOCAD VBA.
A. Introducción
Las macros son un grupo de instrucciones programadas bajo entorno vba
(visual basic para aplicaciones), cuya tarea principal es la automatización de
tareas repetitivas y la resolución de cálculos complejos.
El lenguaje vba, es un lenguaje de programación basado en el visual Basic,
enfocado a la realización de programas sobre las herramientas Excel, Access,
Word...., mediante macros en vba podemos crear nuevas funciones para nuestras
hojas Excel, personalizar estilos y formatos, crear programas para la resolución de
cálculos complejos, automatizar tareas...
Una vez realizado el código vba, podemos ejecutar el programa mediante
la creación de botones, nuevos menús... de tal forma que la aplicación creada
resulte intuitiva y de fácil manejo.
Mediante macros vba podemos crear múltiples aplicaciones que realicen los
cálculos automáticamente y obtengamos resultados en apenas unos segundos.
Las macros vba trabajan en diversos programas, los mas conocidos son los
programas que se incluyen en el paquete Office (Excel ,Word, Access...) pero
además las macros vba también trabajan en diversos programas como
SolidWorks, Autocad...(software creado para el diseño de ingeniería) lo cual
proporciona una enorme versatilidad de utilización, así como una comunicación
entre diversos programas.
A continuación se muestra una serie de ejemplos en los cuales se utilizan macros
vba
1. Macros Vba con Excel.
Creación de nuevas funciones- como por ejemplo la función "código" que
convierte dígitos alfanuméricos a dibujos basados en codificación de código de
barras.
Automatización de tareas repetitivas- realización de informes automáticos,
conexión con bases de datos y otros programas.
Resolución de cálculos complejos e iterativos
Creación de programas, como gestores documentales, software de
planificación.....
2. Macros Vba con AutoCad.
Mediante macros vba podemos comunicar nuestras hojas Excel con los
planos dibujados en autocad.
Creación de informes automáticos sobre los datos contenidos en los planos,
información de los cajetines, información de los puntos, líneas y figuras contenidos
en los planos...
Parametrización y creación de planos a través de una hoja Excel...
Creación de nuevas funciones para autocad......
B. Configuración de la ficha programador y manejo de librerías
Para configura la ficha programador seguiremos los siguientes pasos
ARCHIVO
OPSIONES
PERSONALIZAR CINTA DE OPSIONES
MARCAMOS DESAROLLADOR
CONFIGURACION DE LIBRERIA
ENTRAMOS A DESAROLLADOR
PICAMOS EN VISUAL BASIC
PICAMOSEN HERRAMIENTAS
PICAMOSEN REFERENCIAS
MARCAMOS LOS TRES CASILLEROS
Autocad 2019 Type Library
Autocad Focus Control for VBA Type Library
Autocad Map Mpolygon Type Library
C. Explicación de Variables
1. Byte
Se utiliza para guardar números positivos enteros desde 0 a 255.
Ocupa 1 byte en la memoria.
2. Boolean
Sólo puede almacenar dos valores: Verdadero (1) o Falso (0). Ocupa
2 bytes en la memoria
3. Integer
Este tipo de variable también ocupa 2 bytes pero puede almacenar
un rango de números enteros muy alto: desde -32.768 hasta 32.767.
4. Long
También almacena números enteros desde -2.147.483.648 hasta
2.147.483.647.
5. Currency
Se utiliza para cálculos donde intervienen monedas. Puede
almacenar un rango desde -922.334.203.685.477,5808 hasta
922.337.203.685.477,5807. Ocupa 8 bytes en memoria.
6. Single
Se suele utiliza para almacenar números fraccionarios periódicos.
Abarca desde -3,4028235E+38 a -1,401298E-45 para números
negativos y 1,401298E-45 a 3,4028235E+38 para números positivos.
Ocupa 4 bytes en memoria.
7. Double
Similar al anterior pero con mucha más capacidad. Ocupa 8 bytes
en memoria y comprende desde -1,79769313486231570E+308 a -
4,94065645841246544E-324 para los valores negativos y desde
4,94065645841246544E-324 a 1,79769313486231570E+308 para los
valores positivos.
8. Date
Almacena fechas y horas como números de serie. Estos números
funcionan igual que en Excel: la parte positiva del número
corresponde al día y la parte decimal corresponde a la hora, de
forma que 04/04/1986 a las 16:32:15, está representado por el número
31506,6890625.
9. String
Almacena cadenas de caracteres desde uno solo a unos dos mil
millones aproximadamente. El espacio ocupado por este tipo de
variable depende de la longitud de la cadena guardada.
10. Object
Almacena cualquier referencia a objetos. Ocupa 4 bytes en
memoria.
11. Variant
Es un tipo de variable especial que puede almacenar cualquier tipo
de dato (numéricos, textos o fechas). Ocupan un espacio variable en
la memoria (un tamaño fijo de 22 bytes + la longitud de los datos). Si
una variable no se declara como un tipo de los anteriores, se supone
que es una Variant
D. Explicación de funciones y subrutinas
Lo primero es explicar en qué consiste una función y en qué se
diferencia de un procedimiento o macro.
Una función es un proceso que ejecuta un código programado y
devuelve un valor. La diferencia fundamental entre una función y una
macro es que la primera requiere una o varias variables de
entrada para realizar una serie de operaciones con ellas y después
devolver un resultado. Una macro sin embargo, no requiere una
variable de entrada, y puede realizar multitud de procesos (ej. Crear
una hoja nueva en el documento) sin necesidad de devolver un
resultado.
E. Ejemplo de Creación de función
a. EJEMPLO 1 – CALCULO DEL ÁREA DE UN RECTÁNGULO
Function AREA (base As Double, altura As Double) As Double
AREA = base * altura
End Function
b. EJEMPLO 2 – Crear una función para evaluar si un número es mayor
a 100, de ser el caso que la función de cómo resultado CANTIDAD
GRANDE y si es menor que dé como resultado CANTIDAD PEQUEÑA
Function nEvaluar(j As Integer) As String
nEvaluar = IIf(j >= 1000, "Cantidad Grande", "Cantidad
Pequeña")
End Function
F. Ejemplo de creación de Subrutina
EJEMPLO 1 – Indicar mediante una subrutina la Hora en la celda A1
Sub writeDataEHora()
Range("A1") = Now
End Sub
EJEMPLO 2 – Crear una subrutina que sume la celda A1 y A2 y que calcule
el resultado en la celda A3
Sub SUMAR()
Dim a As Double
Dim b As Double
a = Range("A1")
b = Range("A2")
Range("A3") = a + b
End Sub
G. Ejercicio de Función
a. Ejercicio Nº 01 – CALCULO DEL AREA DE UN CIRCULO
b. Ejercicio Nº 02 – CALCULO DEL AREA DE ACERO
H. Ejercicio de Subrutina
a. Ejercicio Nº 01 – CALCULO DEL AREA DE UN CIRCULO
b. Ejercicio Nº 02 – CALCULO DEL AREA DE ACERO
CURSO DE PROGRAMACION
SESIÓN N° 02 (Duración 2.5 horas)
 Explicación de propiedades de objetos
Los objetos ActiveX que proporciona AutoCAD 19 para su manejo desde programas
VBA están divididos según una jerarquía que deberemos seguir a la hora de llamarlos
o referirnos a ellos. La plantilla que se muestra a continuación nos será muy útil a la
hora de programar, ya que establece dicha jerarquía.
En Visual Basic es factible añadir al entorno nuevos objetos creados por nosotros para
luego ser utilizados. Lo que se ha hecho en VBA es precisamente eso. Estos objetos
tienen sus propiedades y métodos, al igual que los demás. Existen objetos de
entidades individuales de dibujo (líneas, círculos, arcos...) con sus propiedades (color,
capa, tipo de línea...) y métodos (copiar, mover, escalar).
También se han definido otros objetos no gráficos como son el Espacio Modelo, el
Espacio Papel y los bloques. Estos se consideran una colección de objetos de
entidades individuales de dibujo y tienen también sus propiedades para, por ejemplo,
saber cuántas entidades simples contienen, y sus métodos para, por ejemplo, añadir
nuevas entidades a la colección.
El propio documento actual de AutoCAD está definido como un objeto y tiene sus
propiedades (camino de acceso, límites...) y métodos (guardar, regenerar...). Dentro
de él se encuentran los mencionados anteriormente, además de otras colecciones
como el conjunto de capas, de estilos de texto, etcétera, cada una con propiedades
y métodos.
Y todo ello está incluido en el objeto más exterior, que es la aplicación de AutoCAD
 Creación de Objeto tipo línea
Ejemplo Nº 01.- se muestra un ejemplo de código que crea una línea desde el punto
(0, 0, 0) hasta el punto (100, 100, 0).
Sub Linea()
' Declaración de las variables
Dim Punto1 (0 To 2) As Double
Dim Punto2 (0 To 2) As Double
Dim Linea As AcadLine
' Inicialización de los puntos extremos
Punto1(0) = 0: Punto1(1) = 0: Punto1(2) = 0
Punto2(0) = 100: Punto2(1) = 100: Punto2(2) = 0
' Creación de la línea
Set Linea = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto1,
Punto2)
End Sub
Ejercicio Nº 01.- Crear una triangulo, utilizando líneas, cuyos vértices se encuentran
en las siguientes coordenadas A (0, 0, 0), B(0, 100, 0) y C(200, 0, 0)
Sub EJERCICIO1()
' Declaración de las variables
Dim Punto1(0 To 2) As Double
Dim Punto2(0 To 2) As Double
Dim Punto3(0 To 2) As Double
Dim Lado1 As AcadLine
Dim Lado2 As AcadLine
Dim Lado3 As AcadLine
Punto1(0) = 0: Punto1(1) = 0: Punto1(2) = 0
Punto2(0) = 0: Punto2(1) = 100: Punto2(2) = 0
Punto3(0) = 200: Punto3(1) = 0: Punto3(2) = 0
' Creación de las lados
Set Lado1 = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto1, Punto2)
Set Lado2 = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto2, Punto3)
Set Lado3 = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto1, Punto3)
End Sub
 Creación de Objeto tipo polilínea
En otros casos, como al adicionar polilíneas, todas las coordenadas se
almacenas en la misma variable de arreglo. En el siguiente ejemplo se
muestra el código para crear una polilínea que forme un triángulo rectángulo.
Sub Polilinea()
' Declaración de las variables
Dim Puntos(0 To 11) As Double
Dim Polilinea As AcadPolyline
' Inicialización de los vértices
Puntos(0) = 0: Puntos(1) = 0: Puntos(2) = 0
Puntos(3) = 40: Puntos(4) = 0: Puntos(5) = 0
Puntos(6) = 40: Puntos(7) = 30: Puntos(8) = 0
Puntos(9) = 0: Puntos(10) = 0: Puntos(11) = 0
' Creación de la polilínea
Set Polilinea = AutoCAD.Application.ActiveDocument.ModelSpace.
AddPolyline(Puntos)
End Sub
En esta parte simplificaremos el código con ayuda de la propiedad closed
Sub Polilinea()
' Declaración de las variables
Dim Puntos(0 To 8) As Double
Dim Polilinea As AcadPolyline
' Inicialización de los vértices
Puntos(0) = 0: Puntos(1) = 0: Puntos(2) = 0
Puntos(3) = 40: Puntos(4) = 0: Puntos(5) = 0
Puntos(6) = 40: Puntos(7) = 30: Puntos(8) = 0
Puntos(9) = 0: Puntos(10) = 0: Puntos(11) = 0
' Creación de la polilínea
Set Polilinea = AutoCAD.Application.ActiveDocument.ModelSpace.
AddPolyline(Puntos)
Polilinea.Closed = True
End Sub
 Creación de Objeto tipo círculo
Otro grupo importante de elementos, dentro de los dibujos más comunes en
AutoCAD, lo constituyen las entidades curvas (arcos, circunferencias, elipses...).
Para crear estas entidades, el modelo de objetos de AutoCAD dispone de los
siguientes métodos:
AddCircle: Crea una circunferencia dados el punto central y el radio.
• AddArc: Crea un arco de circunferencia, especificando el punto central, el
radio,el ángulo inicial y el ángulo final.
• AddEllipse: Crea una elipse dados su centro, un punto extremo del eje principal
y la relación entre las longitudes de los ejes.
 Creación de Objeto tipo Circulo
Sub circulo()
' Declaración de variables
Dim Punto1(0 To 2) As Double
Dim Radio As Double
Dim circulo As AcadCircle
' Inicialización de los puntos centrales
Punto1(0) = 50: Punto1(1) = 20: Punto1(2) = 0
Radio = 10
Set circulo = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(Punto1,
Radio)
End Sub
 Creación de Objeto tipo arco
Sub Arcos()
' Declaración de variables
Dim Punto1(0 To 2) As Double
Dim Punto2(0 To 2) As Double
Dim Radio As Double
Dim Angulo1 As Double, Angulo2 As Double
Dim Arco1 As AcadArc, Arco2 As AcadArc
' Inicialización de los puntos centrales
Punto1(0) = 50: Punto1(1) = 20: Punto1(2) = 0
Punto2(0) = 50: Punto2(1) = 40: Punto2(2) = 0
' Inicialización del radio y los ángulos
Radio = 10
Angulo1 = 3.1416 * (-90) / 180
Angulo2 = 3.1416 * (90) / 180
' Creación del primer arco
Set Arco1 = AutoCAD.Application.ActiveDocument .ModelSpace.AddArc(Punto1,
Radio, Angulo1, Angulo2)
' Creación del segundo arco
Set Arco2 = AutoCAD.Application.ActiveDocument.ModelSpace. AddArc(Punto2,
Radio, Angulo2, Angulo1)
End Sub
Ejercicio Nº 01.- Crear una circunferencia con la unión de arcos de 90ª, el radio de
los arcos será igual a 20 UND.
 Creación de Objeto tipo Layer
Ejemplo Nº 01.- Creación de una capa de nombre “CAPA1”
Sub capa()
Dim layer As AcadLayer
Set layer = AutoCAD.Application.ActiveDocument.Layers.Add("CAPA1")
End Sub
Ejemplo Nº 02.- asignar el color azul a la capa creada.
Sub capa()
Dim layer As AcadLayer
Set layer = AutoCAD.Application.ActiveDocument.Layers.Add("CAPA1")
layer.Color = acBlue
End Sub
 Ejercicio de aplicación
Crear un código para generar e siguiente dibujo
R22.1200
R17.8800
R20.0000
R3.4000
x:-15.485
Y:-8.8500
x:+15.485
Y:-8.8500
x:+0.000
Y:+17.97
x:-2.940
Y:+1.790
x:+2.940
Y:+1.790
x:+0.000
Y:-3.310
CURSO DE PROGRAMACION
SESIÓN N° 02 (Duración 2.5 horas)
 Utilizacion de la herramienta msgbox
Con Msgbox en VBA para Excel podemos mandar de manera muy
sencilla mensajes a los usuarios cuando estamos utilizando VBA bien
en una macro normal o bien en un evento. Este mensaje aparece en
la pantalla del usuario como una ventana y puede tener varios
elementos de configuración.
SINTAXIS DE MSGBOX EN VBA
La función Msgbox tiene una sintaxis bastante sencilla, pero podemos
complicarla mucho, casi tanto como se quiera. Básicamente esta
función lanza un pop-up con un mensaje. Este pop-up tiene los
siguientes argumentos:
Mensjae: una cadena de texto que se mostrará al usuario.
Título: es opcional. También una cadena de texto que deberá ser
breve para mostrar al usuario.
Botones: es opcional, por defecto aparecerá «Aceptar». Los botones
pueden ser algunos de los siguientes: vbOKonly, vbCancelOnly,
vbYesNo, vbCritical,vbExclamation, vbQuestion…
1. EJEMPLO1: SÓLO EL MENSAJE.
Sub Mensaje()
MsgBox "Bienvenidos al curo de porgramacion!"
End Sub
Como puede verse en el código que hemos escrito, el mensaje
tiene que ir escrito entre comillas dobles.
2. EJEMPLO2: MENSAJE CON UNA EXCLAMACIÓN DE TÍTULO
Sub Mensaje_con_botón()
MsgBox "Bienvenidos a esta web!", vbExclamation
End Sub
Este mensaje además de ser muy visual, lanza una alerta sonara
típica de windows. Como ves, el botón es el de aceptar, pero en
esta ocasión hay un símbolo de exclamación que hace más “pro”
el mensaje.
3. EJEMPLO3: MENSAJE CON BOTONES DE YES , NO Y TÍTULO
Como puede verse en el siguiente ejemplo hemos añadido un
ejemplo con los tres componentes principales de un Msgbox. No es
muy complejo hacerlo pero aún podemos complicarlo un poco
más. Fíjate que el título ha cambiado, ya no pone «Microsoft Excel»
sino que pone «Mi título»
Sub Mensaje_con_título()
MsgBox "Bienvenidos a esta web!", vbYesNo, "Mi título"
End Sub
4. EJEMPLO4: COMBINAR DOS TIPOS DE BOTONES
En este ejemplo vamos a combinar el botón de vbYesNo para que
aparezca como en la anterior imagen con el de la exclamación
del ejemplo 2.
Sub Mensaje_con_dos_botones()
MsgBox "Bienvenidos a esta web!", vbYesNo + vbExclamation,
"Mi título"
End Sub
5. EJEMPLO5: OBTENER LA RESPUESTA SI O NO DEL MSGBOX
En el ejemplo siguiente, VBA preguntará al usuario si está seguro de
querer poner en rojo la celda A1 de este libro.
Sub Obtener_valor_del_mensaje()
'primero pongo la pregunta
resultado = MsgBox("¿Quieres pintar de rojo la celda A1?",
vbYesNo, "Colorear A1")
'ahora manejo el resultado a mi antojo
If resultado = vbYes Then
Range("A1").Interior.Color = vbRed
End If
End Sub
 Utilización de la herramienta Inputbox
Se utiliza para la entrada de datos.
Sub ingresar_dato()
Dim dato As String
dato = InputBox("Ingrese Palabra", "ENTRADA DE DATOS"
Range("A1") = dato
End Sub
 EJEMPLO DE APLICACIÓN
hacer un código que automatice el dibujo de un rectángulo,
utilizando las herramientas de msgbox e inputbox
Sub Dibujar_rectangulo()
MsgBox "Programa creado para el Dibujo" & Chr(13) & "de un rectangulo"
ladoa = InputBox("Ingrese longitud del lado A ", "ENTRADA DE DATOS")
ladob = InputBox("Ingrese longitud del lado B ", "ENTRADA DE DATOS")
MsgBox "Pique la ubicacion del rectangulo"
ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint
Dim perimetro As AcadPolyline
Dim pto(0 To 11) As Double
pto(0) = ptocad(0): pto(1) = ptocad(1): pto(2) = 0
pto(3) = ptocad(0): pto(4) = ptocad(1) + ladob: pto(5) = 0
pto(6) = ptocad(0) + ladoa: pto(7) = ptocad(1) + ladob: pto(8) = 0
pto(9) = ptocad(0) + ladoa: pto(10) = ptocad(1): pto(11) = 0
Set perimetro = AutoCAD.Application.ActiveDocument.ModelSpace.AddPolyline(pto)
perimetro.Closed = True
End Sub
 EJERCICIO DE APLICACIÓN
Hacer un código que automatice el dibujo de una viga, crear capas
para el contorno y para el acero, además usar las herramientas de
Msgbox e inputbox para la entrada de datos.
Imagen Referencial.
Sub Dibujar_viga()
MsgBox "Programa creado para el Dibujo" & Chr(13) & "de automatizado de una
viga"
luz = InputBox("Ingrese luz de la viga (m)", "ENTRADA DE DATOS")
peralte = InputBox("Ingrese peralte dela viga (m) ", "ENTRADA DE DATOS")
r = InputBox("Ingrese recubrimiento (m) ", "ENTRADA DE DATOS")
MsgBox "Indique la ubicacion en el plano de la viga"
ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint
Dim perimetro As AcadPolyline
Dim acero As AcadPolyline
'vertices de la viga
Dim pto(0 To 11) As Double
'vertices del acero superior
Dim ptoasp(0 To 11) As Double
' creacion de capas
Dim capa_contorno As AcadLayer
Dim capa_acero As AcadLayer
Set capa_contorno = AutoCAD.Application.ActiveDocument.Layers.Add("VIGA")
capa_contorno.Color = acBlue
CURSO DE PROGRAMACION
SESIÓN N° 04 (Duración 2.5 horas)
 BUCLES
Las estructuras tipo bucle permiten ejecutar una o varias líneas de
código repetidamente. Puede repetir las instrucciones en una
estructura de bucle hasta que una condición sea True , hasta que
una condición sea False , un número especificado de veces o una
vez por cada elemento de una colección.
En la ilustración siguiente se muestra una estructura de bucle que
ejecuta un conjunto de instrucciones hasta que una condición se
vuelve verdadera:
 BUCLE TIPO FOR NEXT
El bucle FOR NEXT en VBA nos permite en Excel (o cualquier otro
lenguaje de programación) repetir una acción un número de veces
dado. Su sintaxis es la siguiente:
Ejemplo Nº 01.- En este primer ejemplo tenemos el bucle FOR NEXT en
VBA. El bucle contara del 1 a 20 e ira poniendo en una columna el
valor del contador.
Sub CONTAR()
Dim i As Double
For i = 1 To 20
fila = i
Cells(fila, 1) = i
Next
End Sub
Ejemplo Nº 02.- Para este ejemplo añadimos la propiedad “step 2”
que sirve para incrementar el contador de 2 en 2. Es decir,
inicialmente el contador valdrá 1, luego 3, luego 5 y así
sucesivamente, hasta completar la condición To 20
Sub CONTARESTEP()
Dim i As Double
For i = 1 To 20 Step 2
fila = i
Cells(fila, 2) = i
Next
End Sub
Ejemplo Nº 03.- Partiremos del ejemplo Nª 02, ahora queremos que
se impriman los valores en celdas sucesivas sin dejar celdas en
blanco.
Sub CONTARESTEP2()
Dim i As Double
For i = 1 To 20 Step 2
fila = (i + 1) / 2
Cells(fila, 3) = i
Next
End Sub
 BUCLE TIPO DO WHILE
El funcionamiento del bucle Do While en VBA es muy sencillo,
repetiremos una acción tantas veces que sea necesario siempre y
cuando se evalúe una condición.
Ejemplo Nº 01.- Realizaremos el ejercicio Nº 01 de FOR NEXT pero
ahora usaremos DO WHILE
Sub CONTAR()
Dim i As Double
i = 1
Do While i <= 20
fila = i
Cells(fila, 1) = i
i = i + 1
Loop
End Sub
Ejemplo Nº 02.- Realizaremos el ejercicio Nº 03 de FOR NEXT pero
ahora usaremos DO WHILE
Sub CONTAR()
Dim i As Double
i = 1
Do While i <= 20
fila = (i+1)/2
Cells(fila, 1) = i
i = i + 2
Loop
End Sub
 EJEMPLOS
ub
DE APLICACIÓN USANDO EL BUCLE For Nex
Sub CIRCULOS_VARIABLE()
Dim limite As Integer
limite = InputBox("Ingrese ultimo valor")
For i = 1 To limite
Dim texto As AcadText
Dim circulo As AcadCircle
ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint
Dim pto(0 To 2) As Double
pto(0) = ptocad(0)
pto(1) = ptocad(1)
pto(2) = ptocad(2)
Dim ptot(0 To 2) As Double
ptot(0) = ptocad(0)
ptot(1) = ptocad(1) + 2
ptot(2) = 0
Set texto = AutoCAD.Application.ActiveDocument.ModelSpace.AddText(i, pto, 4)
texto.Alignment = acAlignmentCenter
texto.TextAlignmentPoint = pto
Set circulo = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(ptot, 8)
Next
End S
 EJEMPLOS DE APLICACIÓN USANDO EL BUCLE Do While
Sub CIRCULOS_VARIABLE()
n = 1
Dim limite As Integer
limite = InputBox("Ingrese ultimo valor")
Do While n <= limite
Dim texto As AcadText
Dim circulo As AcadCircle
ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint
Dim pto(0 To 2) As Double
pto(0) = ptocad(0)
pto(1) = ptocad(1)
pto(2) = ptocad(2)
Dim ptot(0 To 2) As Double
ptot(0) = ptocad(0)
ptot(1) = ptocad(1) + 2
ptot(2) = 0
Set texto = AutoCAD.Application.ActiveDocument.ModelSpace.AddText(n, pto, 4)
texto.Alignment = acAlignmentCenter
texto.TextAlignmentPoint = pto
Set circulo = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(ptot, 5)
n = n + 1
Loop
End Sub
Ejercicio Nº 01.- Crear una Rutina para dibujar líneas paralelas
verticales de longitud variable y separadas entre sí un valor de x, usar
la herramienta inputbox. (Resolver usando el BUCLE For Next y el BUCLE
Do While)

Más contenido relacionado

La actualidad más candente

Manual de qcad
Manual de qcadManual de qcad
Manual de qcadAvel·lí
 
Manual de librecad 2016
Manual de librecad 2016Manual de librecad 2016
Manual de librecad 2016wendyulacio
 
47629346 revist-users-auto-cad
47629346 revist-users-auto-cad47629346 revist-users-auto-cad
47629346 revist-users-auto-cadxavazquez
 
Curso de-iniciación-autocad
Curso de-iniciación-autocadCurso de-iniciación-autocad
Curso de-iniciación-autocadPierrot Bolneze
 
Herramientas de Colaboración Digital
Herramientas de Colaboración DigitalHerramientas de Colaboración Digital
Herramientas de Colaboración Digitalkaren-lms
 
Clase de Inicio de Diseño.Arq.Marianella Agudo
Clase de Inicio de Diseño.Arq.Marianella AgudoClase de Inicio de Diseño.Arq.Marianella Agudo
Clase de Inicio de Diseño.Arq.Marianella AgudoMarianella_agudo
 
Manual Autocad 2009 Espa Ol
Manual Autocad 2009 Espa OlManual Autocad 2009 Espa Ol
Manual Autocad 2009 Espa OlJavier Cuzco
 
Material de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentroMaterial de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentrorodalopresentaciones
 
Access apuntes tablas
Access apuntes tablasAccess apuntes tablas
Access apuntes tablasanasmr
 

La actualidad más candente (14)

Manual de qcad
Manual de qcadManual de qcad
Manual de qcad
 
Manual de librecad 2016
Manual de librecad 2016Manual de librecad 2016
Manual de librecad 2016
 
47629346 revist-users-auto-cad
47629346 revist-users-auto-cad47629346 revist-users-auto-cad
47629346 revist-users-auto-cad
 
Que es la hoja de calculo
Que es la hoja de calculoQue es la hoja de calculo
Que es la hoja de calculo
 
Curso de-iniciación-autocad
Curso de-iniciación-autocadCurso de-iniciación-autocad
Curso de-iniciación-autocad
 
Herramientas de Colaboración Digital
Herramientas de Colaboración DigitalHerramientas de Colaboración Digital
Herramientas de Colaboración Digital
 
Unidad 2 ordenes de dibujo simple
Unidad 2 ordenes de dibujo simpleUnidad 2 ordenes de dibujo simple
Unidad 2 ordenes de dibujo simple
 
Winplot
WinplotWinplot
Winplot
 
Clase de Inicio de Diseño.Arq.Marianella Agudo
Clase de Inicio de Diseño.Arq.Marianella AgudoClase de Inicio de Diseño.Arq.Marianella Agudo
Clase de Inicio de Diseño.Arq.Marianella Agudo
 
Manual Autocad 2009 Espa Ol
Manual Autocad 2009 Espa OlManual Autocad 2009 Espa Ol
Manual Autocad 2009 Espa Ol
 
Graficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebraGraficando funciones cuadraticas en geogebra
Graficando funciones cuadraticas en geogebra
 
Auto cad
Auto cadAuto cad
Auto cad
 
Material de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentroMaterial de Trabajo para el Segundo encuentro
Material de Trabajo para el Segundo encuentro
 
Access apuntes tablas
Access apuntes tablasAccess apuntes tablas
Access apuntes tablas
 

Similar a DATA AUTOMATION.pdf

Similar a DATA AUTOMATION.pdf (20)

Ecxel manual
Ecxel manualEcxel manual
Ecxel manual
 
Matlab scientific scilab_mathematics
Matlab scientific scilab_mathematicsMatlab scientific scilab_mathematics
Matlab scientific scilab_mathematics
 
Excel
ExcelExcel
Excel
 
Teoria y actividades excel 4 eso
Teoria y actividades excel  4 esoTeoria y actividades excel  4 eso
Teoria y actividades excel 4 eso
 
Microsoft excel
Microsoft excelMicrosoft excel
Microsoft excel
 
D:\Miweb\Final\Hoja De Calculo
D:\Miweb\Final\Hoja De CalculoD:\Miweb\Final\Hoja De Calculo
D:\Miweb\Final\Hoja De Calculo
 
Programacion cad vba
Programacion cad   vbaProgramacion cad   vba
Programacion cad vba
 
Taller ntic´s
Taller ntic´sTaller ntic´s
Taller ntic´s
 
Excel 1er año
Excel 1er añoExcel 1er año
Excel 1er año
 
Ambiente excel Javier Romero
Ambiente excel Javier RomeroAmbiente excel Javier Romero
Ambiente excel Javier Romero
 
Funciones de vba en excel
Funciones de vba en excelFunciones de vba en excel
Funciones de vba en excel
 
Excel 2016
Excel 2016Excel 2016
Excel 2016
 
Manual autocad
Manual autocadManual autocad
Manual autocad
 
Tema 3
Tema 3Tema 3
Tema 3
 
MANUAL DE EXEL
MANUAL DE EXELMANUAL DE EXEL
MANUAL DE EXEL
 
Curso calc1
Curso calc1Curso calc1
Curso calc1
 
Exposicion informatica
Exposicion informaticaExposicion informatica
Exposicion informatica
 
Exposicion informatica
Exposicion informaticaExposicion informatica
Exposicion informatica
 
Exposicion informatica
Exposicion informaticaExposicion informatica
Exposicion informatica
 
Exposicion informatica
Exposicion informaticaExposicion informatica
Exposicion informatica
 

Último

La Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel VelásquezLa Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel VelásquezRosibelVictoriaVelas
 
Portafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B HuizingaPortafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B Huizingagbhuizinga2000
 
Historia de los estilos artísticos docum
Historia de los estilos artísticos documHistoria de los estilos artísticos docum
Historia de los estilos artísticos documminipuw
 
EL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdf
EL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdfEL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdf
EL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdfCeciliaTernR1
 
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)LeonardoDantasRivas
 
brasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptxbrasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptxErikRamirez67
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfBrbara57940
 
arquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2darquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2dheribertaferrer
 
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)lemg25102006
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Roheimariagsg
 
PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .Rosa329296
 
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura ModernaLe Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Modernasofpaolpz
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfslaimenbarakat
 
Gabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabrielaMarcano12
 
Arquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSMArquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSMNaza59
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHEgonzalezdfidelibus
 
Maquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdfMaquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdforianaandrade11
 
Curso Básico de Windows Word y PowerPoint.pdf
Curso Básico de Windows Word y PowerPoint.pdfCurso Básico de Windows Word y PowerPoint.pdf
Curso Básico de Windows Word y PowerPoint.pdfirisvanegas1990
 
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...sayumi4
 
Arquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezArquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezNaza59
 

Último (20)

La Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel VelásquezLa Modernidad y Arquitectura Moderna - Rosibel Velásquez
La Modernidad y Arquitectura Moderna - Rosibel Velásquez
 
Portafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B HuizingaPortafolio de Diseño Gráfico por Giorgio B Huizinga
Portafolio de Diseño Gráfico por Giorgio B Huizinga
 
Historia de los estilos artísticos docum
Historia de los estilos artísticos documHistoria de los estilos artísticos docum
Historia de los estilos artísticos docum
 
EL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdf
EL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdfEL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdf
EL CONCEPTO Y EL PARTIDO ARQUITECTONICO.pdf
 
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
Arquitectos del Movimiento Moderno (Historia de la Arquitectura)
 
brasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptxbrasilia-150521136-lva1-app6891 (1).pptx
brasilia-150521136-lva1-app6891 (1).pptx
 
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdfLAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
LAMODERNIDADARQUITECTURABYBARBARAPADILLA.pdf
 
arquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2darquitectura griega.pdf fghjdchjypiyez2d
arquitectura griega.pdf fghjdchjypiyez2d
 
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
PRESENTACION DE LA ARQUITECTURA GRIEGA (EDAD ANTIGUA)
 
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der RoheArquitectura Moderna Le Corbusier- Mies Van Der Rohe
Arquitectura Moderna Le Corbusier- Mies Van Der Rohe
 
PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .PRESENTACION SOBRE EL PROYECTO DE GRADO .
PRESENTACION SOBRE EL PROYECTO DE GRADO .
 
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura ModernaLe Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
Le Corbusier y Mies van der Rohe: Aportes a la Arquitectura Moderna
 
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdfSlaimen Barakat - SLIDESHARE TAREA 2.pdf
Slaimen Barakat - SLIDESHARE TAREA 2.pdf
 
Gabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimientoGabriela Marcano historia de la arquitectura 2 renacimiento
Gabriela Marcano historia de la arquitectura 2 renacimiento
 
Arquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSMArquitectura moderna nazareth bermudez PSM
Arquitectura moderna nazareth bermudez PSM
 
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHEAPORTES Y CARACTERISTICAS DE LAS OBRAS DE  CORBUSIER. MIES VAN DER ROHE
APORTES Y CARACTERISTICAS DE LAS OBRAS DE CORBUSIER. MIES VAN DER ROHE
 
Maquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdfMaquetas-modelos-prototipos-Mapa mental-.pdf
Maquetas-modelos-prototipos-Mapa mental-.pdf
 
Curso Básico de Windows Word y PowerPoint.pdf
Curso Básico de Windows Word y PowerPoint.pdfCurso Básico de Windows Word y PowerPoint.pdf
Curso Básico de Windows Word y PowerPoint.pdf
 
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
ALICORP wdv ebwnskjdhejsklxkcnhbvjdkspdlfkjhdjisokdjchbvfnhjdkslkjdhfeiopweoi...
 
Arquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth BermúdezArquitectura moderna / Nazareth Bermúdez
Arquitectura moderna / Nazareth Bermúdez
 

DATA AUTOMATION.pdf

  • 2. TEMARIO PROGRAMACION EXCEL FOR AUTOCAD VBA. A. Introducción Las macros son un grupo de instrucciones programadas bajo entorno vba (visual basic para aplicaciones), cuya tarea principal es la automatización de tareas repetitivas y la resolución de cálculos complejos. El lenguaje vba, es un lenguaje de programación basado en el visual Basic, enfocado a la realización de programas sobre las herramientas Excel, Access, Word...., mediante macros en vba podemos crear nuevas funciones para nuestras hojas Excel, personalizar estilos y formatos, crear programas para la resolución de cálculos complejos, automatizar tareas... Una vez realizado el código vba, podemos ejecutar el programa mediante la creación de botones, nuevos menús... de tal forma que la aplicación creada resulte intuitiva y de fácil manejo. Mediante macros vba podemos crear múltiples aplicaciones que realicen los cálculos automáticamente y obtengamos resultados en apenas unos segundos. Las macros vba trabajan en diversos programas, los mas conocidos son los programas que se incluyen en el paquete Office (Excel ,Word, Access...) pero además las macros vba también trabajan en diversos programas como SolidWorks, Autocad...(software creado para el diseño de ingeniería) lo cual proporciona una enorme versatilidad de utilización, así como una comunicación entre diversos programas. A continuación se muestra una serie de ejemplos en los cuales se utilizan macros vba 1. Macros Vba con Excel. Creación de nuevas funciones- como por ejemplo la función "código" que convierte dígitos alfanuméricos a dibujos basados en codificación de código de barras. Automatización de tareas repetitivas- realización de informes automáticos, conexión con bases de datos y otros programas. Resolución de cálculos complejos e iterativos Creación de programas, como gestores documentales, software de planificación..... 2. Macros Vba con AutoCad. Mediante macros vba podemos comunicar nuestras hojas Excel con los planos dibujados en autocad. Creación de informes automáticos sobre los datos contenidos en los planos, información de los cajetines, información de los puntos, líneas y figuras contenidos en los planos... Parametrización y creación de planos a través de una hoja Excel... Creación de nuevas funciones para autocad......
  • 3. B. Configuración de la ficha programador y manejo de librerías Para configura la ficha programador seguiremos los siguientes pasos ARCHIVO OPSIONES
  • 4. PERSONALIZAR CINTA DE OPSIONES MARCAMOS DESAROLLADOR
  • 5. CONFIGURACION DE LIBRERIA ENTRAMOS A DESAROLLADOR PICAMOS EN VISUAL BASIC
  • 7. MARCAMOS LOS TRES CASILLEROS Autocad 2019 Type Library Autocad Focus Control for VBA Type Library Autocad Map Mpolygon Type Library C. Explicación de Variables 1. Byte Se utiliza para guardar números positivos enteros desde 0 a 255. Ocupa 1 byte en la memoria. 2. Boolean Sólo puede almacenar dos valores: Verdadero (1) o Falso (0). Ocupa 2 bytes en la memoria 3. Integer Este tipo de variable también ocupa 2 bytes pero puede almacenar un rango de números enteros muy alto: desde -32.768 hasta 32.767. 4. Long También almacena números enteros desde -2.147.483.648 hasta 2.147.483.647. 5. Currency Se utiliza para cálculos donde intervienen monedas. Puede almacenar un rango desde -922.334.203.685.477,5808 hasta 922.337.203.685.477,5807. Ocupa 8 bytes en memoria.
  • 8. 6. Single Se suele utiliza para almacenar números fraccionarios periódicos. Abarca desde -3,4028235E+38 a -1,401298E-45 para números negativos y 1,401298E-45 a 3,4028235E+38 para números positivos. Ocupa 4 bytes en memoria. 7. Double Similar al anterior pero con mucha más capacidad. Ocupa 8 bytes en memoria y comprende desde -1,79769313486231570E+308 a - 4,94065645841246544E-324 para los valores negativos y desde 4,94065645841246544E-324 a 1,79769313486231570E+308 para los valores positivos. 8. Date Almacena fechas y horas como números de serie. Estos números funcionan igual que en Excel: la parte positiva del número corresponde al día y la parte decimal corresponde a la hora, de forma que 04/04/1986 a las 16:32:15, está representado por el número 31506,6890625. 9. String Almacena cadenas de caracteres desde uno solo a unos dos mil millones aproximadamente. El espacio ocupado por este tipo de variable depende de la longitud de la cadena guardada. 10. Object Almacena cualquier referencia a objetos. Ocupa 4 bytes en memoria. 11. Variant Es un tipo de variable especial que puede almacenar cualquier tipo de dato (numéricos, textos o fechas). Ocupan un espacio variable en la memoria (un tamaño fijo de 22 bytes + la longitud de los datos). Si una variable no se declara como un tipo de los anteriores, se supone que es una Variant
  • 9. D. Explicación de funciones y subrutinas Lo primero es explicar en qué consiste una función y en qué se diferencia de un procedimiento o macro. Una función es un proceso que ejecuta un código programado y devuelve un valor. La diferencia fundamental entre una función y una macro es que la primera requiere una o varias variables de entrada para realizar una serie de operaciones con ellas y después devolver un resultado. Una macro sin embargo, no requiere una variable de entrada, y puede realizar multitud de procesos (ej. Crear una hoja nueva en el documento) sin necesidad de devolver un resultado. E. Ejemplo de Creación de función a. EJEMPLO 1 – CALCULO DEL ÁREA DE UN RECTÁNGULO Function AREA (base As Double, altura As Double) As Double AREA = base * altura End Function b. EJEMPLO 2 – Crear una función para evaluar si un número es mayor a 100, de ser el caso que la función de cómo resultado CANTIDAD GRANDE y si es menor que dé como resultado CANTIDAD PEQUEÑA Function nEvaluar(j As Integer) As String nEvaluar = IIf(j >= 1000, "Cantidad Grande", "Cantidad Pequeña") End Function
  • 10. F. Ejemplo de creación de Subrutina EJEMPLO 1 – Indicar mediante una subrutina la Hora en la celda A1 Sub writeDataEHora() Range("A1") = Now End Sub EJEMPLO 2 – Crear una subrutina que sume la celda A1 y A2 y que calcule el resultado en la celda A3 Sub SUMAR() Dim a As Double Dim b As Double a = Range("A1") b = Range("A2") Range("A3") = a + b End Sub G. Ejercicio de Función a. Ejercicio Nº 01 – CALCULO DEL AREA DE UN CIRCULO b. Ejercicio Nº 02 – CALCULO DEL AREA DE ACERO H. Ejercicio de Subrutina a. Ejercicio Nº 01 – CALCULO DEL AREA DE UN CIRCULO b. Ejercicio Nº 02 – CALCULO DEL AREA DE ACERO
  • 12. SESIÓN N° 02 (Duración 2.5 horas)  Explicación de propiedades de objetos Los objetos ActiveX que proporciona AutoCAD 19 para su manejo desde programas VBA están divididos según una jerarquía que deberemos seguir a la hora de llamarlos o referirnos a ellos. La plantilla que se muestra a continuación nos será muy útil a la hora de programar, ya que establece dicha jerarquía. En Visual Basic es factible añadir al entorno nuevos objetos creados por nosotros para luego ser utilizados. Lo que se ha hecho en VBA es precisamente eso. Estos objetos tienen sus propiedades y métodos, al igual que los demás. Existen objetos de entidades individuales de dibujo (líneas, círculos, arcos...) con sus propiedades (color, capa, tipo de línea...) y métodos (copiar, mover, escalar). También se han definido otros objetos no gráficos como son el Espacio Modelo, el Espacio Papel y los bloques. Estos se consideran una colección de objetos de entidades individuales de dibujo y tienen también sus propiedades para, por ejemplo, saber cuántas entidades simples contienen, y sus métodos para, por ejemplo, añadir nuevas entidades a la colección. El propio documento actual de AutoCAD está definido como un objeto y tiene sus propiedades (camino de acceso, límites...) y métodos (guardar, regenerar...). Dentro de él se encuentran los mencionados anteriormente, además de otras colecciones como el conjunto de capas, de estilos de texto, etcétera, cada una con propiedades y métodos. Y todo ello está incluido en el objeto más exterior, que es la aplicación de AutoCAD
  • 13.  Creación de Objeto tipo línea Ejemplo Nº 01.- se muestra un ejemplo de código que crea una línea desde el punto (0, 0, 0) hasta el punto (100, 100, 0). Sub Linea() ' Declaración de las variables Dim Punto1 (0 To 2) As Double Dim Punto2 (0 To 2) As Double Dim Linea As AcadLine ' Inicialización de los puntos extremos Punto1(0) = 0: Punto1(1) = 0: Punto1(2) = 0 Punto2(0) = 100: Punto2(1) = 100: Punto2(2) = 0 ' Creación de la línea Set Linea = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto1, Punto2) End Sub Ejercicio Nº 01.- Crear una triangulo, utilizando líneas, cuyos vértices se encuentran en las siguientes coordenadas A (0, 0, 0), B(0, 100, 0) y C(200, 0, 0) Sub EJERCICIO1() ' Declaración de las variables Dim Punto1(0 To 2) As Double Dim Punto2(0 To 2) As Double Dim Punto3(0 To 2) As Double Dim Lado1 As AcadLine Dim Lado2 As AcadLine Dim Lado3 As AcadLine Punto1(0) = 0: Punto1(1) = 0: Punto1(2) = 0 Punto2(0) = 0: Punto2(1) = 100: Punto2(2) = 0 Punto3(0) = 200: Punto3(1) = 0: Punto3(2) = 0 ' Creación de las lados Set Lado1 = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto1, Punto2) Set Lado2 = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto2, Punto3) Set Lado3 = AutoCAD.Application.ActiveDocument.ModelSpace.AddLine(Punto1, Punto3) End Sub
  • 14.  Creación de Objeto tipo polilínea En otros casos, como al adicionar polilíneas, todas las coordenadas se almacenas en la misma variable de arreglo. En el siguiente ejemplo se muestra el código para crear una polilínea que forme un triángulo rectángulo. Sub Polilinea() ' Declaración de las variables Dim Puntos(0 To 11) As Double Dim Polilinea As AcadPolyline ' Inicialización de los vértices Puntos(0) = 0: Puntos(1) = 0: Puntos(2) = 0 Puntos(3) = 40: Puntos(4) = 0: Puntos(5) = 0 Puntos(6) = 40: Puntos(7) = 30: Puntos(8) = 0 Puntos(9) = 0: Puntos(10) = 0: Puntos(11) = 0 ' Creación de la polilínea Set Polilinea = AutoCAD.Application.ActiveDocument.ModelSpace. AddPolyline(Puntos) End Sub En esta parte simplificaremos el código con ayuda de la propiedad closed Sub Polilinea() ' Declaración de las variables Dim Puntos(0 To 8) As Double Dim Polilinea As AcadPolyline ' Inicialización de los vértices Puntos(0) = 0: Puntos(1) = 0: Puntos(2) = 0 Puntos(3) = 40: Puntos(4) = 0: Puntos(5) = 0 Puntos(6) = 40: Puntos(7) = 30: Puntos(8) = 0 Puntos(9) = 0: Puntos(10) = 0: Puntos(11) = 0 ' Creación de la polilínea Set Polilinea = AutoCAD.Application.ActiveDocument.ModelSpace. AddPolyline(Puntos) Polilinea.Closed = True End Sub
  • 15.  Creación de Objeto tipo círculo Otro grupo importante de elementos, dentro de los dibujos más comunes en AutoCAD, lo constituyen las entidades curvas (arcos, circunferencias, elipses...). Para crear estas entidades, el modelo de objetos de AutoCAD dispone de los siguientes métodos: AddCircle: Crea una circunferencia dados el punto central y el radio. • AddArc: Crea un arco de circunferencia, especificando el punto central, el radio,el ángulo inicial y el ángulo final. • AddEllipse: Crea una elipse dados su centro, un punto extremo del eje principal y la relación entre las longitudes de los ejes.  Creación de Objeto tipo Circulo Sub circulo() ' Declaración de variables Dim Punto1(0 To 2) As Double Dim Radio As Double Dim circulo As AcadCircle ' Inicialización de los puntos centrales Punto1(0) = 50: Punto1(1) = 20: Punto1(2) = 0 Radio = 10 Set circulo = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(Punto1, Radio) End Sub  Creación de Objeto tipo arco
  • 16. Sub Arcos() ' Declaración de variables Dim Punto1(0 To 2) As Double Dim Punto2(0 To 2) As Double Dim Radio As Double Dim Angulo1 As Double, Angulo2 As Double Dim Arco1 As AcadArc, Arco2 As AcadArc ' Inicialización de los puntos centrales Punto1(0) = 50: Punto1(1) = 20: Punto1(2) = 0 Punto2(0) = 50: Punto2(1) = 40: Punto2(2) = 0 ' Inicialización del radio y los ángulos Radio = 10 Angulo1 = 3.1416 * (-90) / 180 Angulo2 = 3.1416 * (90) / 180 ' Creación del primer arco Set Arco1 = AutoCAD.Application.ActiveDocument .ModelSpace.AddArc(Punto1, Radio, Angulo1, Angulo2) ' Creación del segundo arco Set Arco2 = AutoCAD.Application.ActiveDocument.ModelSpace. AddArc(Punto2, Radio, Angulo2, Angulo1) End Sub Ejercicio Nº 01.- Crear una circunferencia con la unión de arcos de 90ª, el radio de los arcos será igual a 20 UND.
  • 17.  Creación de Objeto tipo Layer Ejemplo Nº 01.- Creación de una capa de nombre “CAPA1” Sub capa() Dim layer As AcadLayer Set layer = AutoCAD.Application.ActiveDocument.Layers.Add("CAPA1") End Sub Ejemplo Nº 02.- asignar el color azul a la capa creada. Sub capa() Dim layer As AcadLayer Set layer = AutoCAD.Application.ActiveDocument.Layers.Add("CAPA1") layer.Color = acBlue End Sub  Ejercicio de aplicación Crear un código para generar e siguiente dibujo R22.1200 R17.8800 R20.0000 R3.4000 x:-15.485 Y:-8.8500 x:+15.485 Y:-8.8500 x:+0.000 Y:+17.97 x:-2.940 Y:+1.790 x:+2.940 Y:+1.790 x:+0.000 Y:-3.310
  • 19. SESIÓN N° 02 (Duración 2.5 horas)  Utilizacion de la herramienta msgbox Con Msgbox en VBA para Excel podemos mandar de manera muy sencilla mensajes a los usuarios cuando estamos utilizando VBA bien en una macro normal o bien en un evento. Este mensaje aparece en la pantalla del usuario como una ventana y puede tener varios elementos de configuración. SINTAXIS DE MSGBOX EN VBA La función Msgbox tiene una sintaxis bastante sencilla, pero podemos complicarla mucho, casi tanto como se quiera. Básicamente esta función lanza un pop-up con un mensaje. Este pop-up tiene los siguientes argumentos: Mensjae: una cadena de texto que se mostrará al usuario. Título: es opcional. También una cadena de texto que deberá ser breve para mostrar al usuario. Botones: es opcional, por defecto aparecerá «Aceptar». Los botones pueden ser algunos de los siguientes: vbOKonly, vbCancelOnly, vbYesNo, vbCritical,vbExclamation, vbQuestion… 1. EJEMPLO1: SÓLO EL MENSAJE. Sub Mensaje() MsgBox "Bienvenidos al curo de porgramacion!" End Sub Como puede verse en el código que hemos escrito, el mensaje tiene que ir escrito entre comillas dobles. 2. EJEMPLO2: MENSAJE CON UNA EXCLAMACIÓN DE TÍTULO
  • 20. Sub Mensaje_con_botón() MsgBox "Bienvenidos a esta web!", vbExclamation End Sub Este mensaje además de ser muy visual, lanza una alerta sonara típica de windows. Como ves, el botón es el de aceptar, pero en esta ocasión hay un símbolo de exclamación que hace más “pro” el mensaje. 3. EJEMPLO3: MENSAJE CON BOTONES DE YES , NO Y TÍTULO Como puede verse en el siguiente ejemplo hemos añadido un ejemplo con los tres componentes principales de un Msgbox. No es muy complejo hacerlo pero aún podemos complicarlo un poco más. Fíjate que el título ha cambiado, ya no pone «Microsoft Excel» sino que pone «Mi título» Sub Mensaje_con_título() MsgBox "Bienvenidos a esta web!", vbYesNo, "Mi título" End Sub
  • 21. 4. EJEMPLO4: COMBINAR DOS TIPOS DE BOTONES En este ejemplo vamos a combinar el botón de vbYesNo para que aparezca como en la anterior imagen con el de la exclamación del ejemplo 2. Sub Mensaje_con_dos_botones() MsgBox "Bienvenidos a esta web!", vbYesNo + vbExclamation, "Mi título" End Sub 5. EJEMPLO5: OBTENER LA RESPUESTA SI O NO DEL MSGBOX En el ejemplo siguiente, VBA preguntará al usuario si está seguro de querer poner en rojo la celda A1 de este libro. Sub Obtener_valor_del_mensaje() 'primero pongo la pregunta resultado = MsgBox("¿Quieres pintar de rojo la celda A1?", vbYesNo, "Colorear A1") 'ahora manejo el resultado a mi antojo If resultado = vbYes Then Range("A1").Interior.Color = vbRed End If End Sub
  • 22.  Utilización de la herramienta Inputbox Se utiliza para la entrada de datos. Sub ingresar_dato() Dim dato As String dato = InputBox("Ingrese Palabra", "ENTRADA DE DATOS" Range("A1") = dato End Sub  EJEMPLO DE APLICACIÓN hacer un código que automatice el dibujo de un rectángulo, utilizando las herramientas de msgbox e inputbox Sub Dibujar_rectangulo() MsgBox "Programa creado para el Dibujo" & Chr(13) & "de un rectangulo" ladoa = InputBox("Ingrese longitud del lado A ", "ENTRADA DE DATOS") ladob = InputBox("Ingrese longitud del lado B ", "ENTRADA DE DATOS") MsgBox "Pique la ubicacion del rectangulo" ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint Dim perimetro As AcadPolyline Dim pto(0 To 11) As Double pto(0) = ptocad(0): pto(1) = ptocad(1): pto(2) = 0 pto(3) = ptocad(0): pto(4) = ptocad(1) + ladob: pto(5) = 0 pto(6) = ptocad(0) + ladoa: pto(7) = ptocad(1) + ladob: pto(8) = 0 pto(9) = ptocad(0) + ladoa: pto(10) = ptocad(1): pto(11) = 0 Set perimetro = AutoCAD.Application.ActiveDocument.ModelSpace.AddPolyline(pto) perimetro.Closed = True End Sub
  • 23.  EJERCICIO DE APLICACIÓN Hacer un código que automatice el dibujo de una viga, crear capas para el contorno y para el acero, además usar las herramientas de Msgbox e inputbox para la entrada de datos. Imagen Referencial. Sub Dibujar_viga() MsgBox "Programa creado para el Dibujo" & Chr(13) & "de automatizado de una viga" luz = InputBox("Ingrese luz de la viga (m)", "ENTRADA DE DATOS") peralte = InputBox("Ingrese peralte dela viga (m) ", "ENTRADA DE DATOS") r = InputBox("Ingrese recubrimiento (m) ", "ENTRADA DE DATOS") MsgBox "Indique la ubicacion en el plano de la viga" ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint Dim perimetro As AcadPolyline Dim acero As AcadPolyline 'vertices de la viga Dim pto(0 To 11) As Double 'vertices del acero superior Dim ptoasp(0 To 11) As Double ' creacion de capas Dim capa_contorno As AcadLayer Dim capa_acero As AcadLayer Set capa_contorno = AutoCAD.Application.ActiveDocument.Layers.Add("VIGA") capa_contorno.Color = acBlue
  • 25. SESIÓN N° 04 (Duración 2.5 horas)  BUCLES Las estructuras tipo bucle permiten ejecutar una o varias líneas de código repetidamente. Puede repetir las instrucciones en una estructura de bucle hasta que una condición sea True , hasta que una condición sea False , un número especificado de veces o una vez por cada elemento de una colección. En la ilustración siguiente se muestra una estructura de bucle que ejecuta un conjunto de instrucciones hasta que una condición se vuelve verdadera:  BUCLE TIPO FOR NEXT El bucle FOR NEXT en VBA nos permite en Excel (o cualquier otro lenguaje de programación) repetir una acción un número de veces dado. Su sintaxis es la siguiente: Ejemplo Nº 01.- En este primer ejemplo tenemos el bucle FOR NEXT en VBA. El bucle contara del 1 a 20 e ira poniendo en una columna el valor del contador. Sub CONTAR() Dim i As Double For i = 1 To 20 fila = i Cells(fila, 1) = i Next End Sub
  • 26. Ejemplo Nº 02.- Para este ejemplo añadimos la propiedad “step 2” que sirve para incrementar el contador de 2 en 2. Es decir, inicialmente el contador valdrá 1, luego 3, luego 5 y así sucesivamente, hasta completar la condición To 20 Sub CONTARESTEP() Dim i As Double For i = 1 To 20 Step 2 fila = i Cells(fila, 2) = i Next End Sub Ejemplo Nº 03.- Partiremos del ejemplo Nª 02, ahora queremos que se impriman los valores en celdas sucesivas sin dejar celdas en blanco. Sub CONTARESTEP2() Dim i As Double For i = 1 To 20 Step 2 fila = (i + 1) / 2 Cells(fila, 3) = i Next End Sub
  • 27.  BUCLE TIPO DO WHILE El funcionamiento del bucle Do While en VBA es muy sencillo, repetiremos una acción tantas veces que sea necesario siempre y cuando se evalúe una condición. Ejemplo Nº 01.- Realizaremos el ejercicio Nº 01 de FOR NEXT pero ahora usaremos DO WHILE Sub CONTAR() Dim i As Double i = 1 Do While i <= 20 fila = i Cells(fila, 1) = i i = i + 1 Loop End Sub Ejemplo Nº 02.- Realizaremos el ejercicio Nº 03 de FOR NEXT pero ahora usaremos DO WHILE Sub CONTAR() Dim i As Double i = 1 Do While i <= 20 fila = (i+1)/2 Cells(fila, 1) = i i = i + 2 Loop End Sub
  • 28.  EJEMPLOS ub DE APLICACIÓN USANDO EL BUCLE For Nex Sub CIRCULOS_VARIABLE() Dim limite As Integer limite = InputBox("Ingrese ultimo valor") For i = 1 To limite Dim texto As AcadText Dim circulo As AcadCircle ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint Dim pto(0 To 2) As Double pto(0) = ptocad(0) pto(1) = ptocad(1) pto(2) = ptocad(2) Dim ptot(0 To 2) As Double ptot(0) = ptocad(0) ptot(1) = ptocad(1) + 2 ptot(2) = 0 Set texto = AutoCAD.Application.ActiveDocument.ModelSpace.AddText(i, pto, 4) texto.Alignment = acAlignmentCenter texto.TextAlignmentPoint = pto Set circulo = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(ptot, 8) Next End S
  • 29.  EJEMPLOS DE APLICACIÓN USANDO EL BUCLE Do While Sub CIRCULOS_VARIABLE() n = 1 Dim limite As Integer limite = InputBox("Ingrese ultimo valor") Do While n <= limite Dim texto As AcadText Dim circulo As AcadCircle ptocad = AutoCAD.Application.ActiveDocument.Utility.GetPoint Dim pto(0 To 2) As Double pto(0) = ptocad(0) pto(1) = ptocad(1) pto(2) = ptocad(2) Dim ptot(0 To 2) As Double ptot(0) = ptocad(0) ptot(1) = ptocad(1) + 2 ptot(2) = 0 Set texto = AutoCAD.Application.ActiveDocument.ModelSpace.AddText(n, pto, 4) texto.Alignment = acAlignmentCenter texto.TextAlignmentPoint = pto Set circulo = AutoCAD.Application.ActiveDocument.ModelSpace.AddCircle(ptot, 5) n = n + 1 Loop End Sub
  • 30. Ejercicio Nº 01.- Crear una Rutina para dibujar líneas paralelas verticales de longitud variable y separadas entre sí un valor de x, usar la herramienta inputbox. (Resolver usando el BUCLE For Next y el BUCLE Do While)