Академический Документы
Профессиональный Документы
Культура Документы
MACRO SENCILLA EN
EXCEL PARA TAREAS
RUTINARIAS
09/03/2012
BY BRAIS KOECKLIN
4 COMMENTS
Uno de los principales enemigos con los que tendremos que batallar es la
importacin de datos desde otro programa. Veamos un ejemplo: trabajamos
con una aplicacin en la que una serie de vendedores nos van indicando el
nmero de ventas que realizan, y al finalizar el mes, tenemos que pasarle a
nuestro superior una tabla informativa, pero la aplicacin que usan los
vendedores no es Excel, aunque s nos permite exportar a dicho formato.
Aunque no sea el mejor ejemplo del mundo, es claro para todos.
Continuemos.
Todas estas acciones, que hacemos mes a mes, realmente no nos comen
mucho tiempo, no ms de 5 minutos salvo que nos lo pidan diario o
semanal, tengamos varios grupos de vendedores Estoy seguro de que este
pequeo tutorial te ser de mucha ayuda para tus tareas.
Es cierto que hay mucha gente que programa sus macros para tareas ms
complejas, pero este tutorial no es para esa gente es para todo el mundo que
empieza con excel o que no tiene muchas tablas en el asunto. La mejor manera
de empezar es grabando una Macro.
Podemos asignar una macro a un botn o una imagen para no tener que
buscarla en la Pestaa Programador.
Podemos
COMPRTELO:
http://www.educadictos.com/creacion-de-una-macro-sencilla-en-excel-para-
tareas-rutinarias/
aprendiendo
excel
interactivo
TUTORIAL DE EXCEL TUTORIAL DE EXCEL >
o Filtros
o Funcin Si Introduccin a Macros
o Grficos estadsticos
o Introduccin a Macros
o Tablas Dinmicas y Grficos
Dinmicos
Mapa del sitio
Qu es una macro de Excel?
Si utilizas Excel frecuentemente es posible que en alg
repetidas veces se podran automatizar con una macr
Un lenguaje de programacin
Las macros se escriben en un lenguaje de computado
prcticamente todas las funcionalidades de Excel y co
Automatizacin de tareas
Seguramente ests familiarizado con procesos de aut
existen robots que han sustituido tareas que antes era
mejor aprovechamiento del tiempo del personal al red
Ejercicios de refuerzo:
Comentarios
https://sites.google.com/site/aprendiendoexcelinteractivo/home/introduccion
-a-macros
Excel: Una macro para la
combinacin de correspondencia
Un problema interesante es el de generar copias de una planilla
cambiando algunos datos, tomados de una lista en otra planilla. Algo
parecido a la combinacin de correspondencia de Word. Aunque no
existe un comando equivalente en Excel, lo podemos simular
mediante una macro.
Jueves, 2 de Julio de 2015
Digamos, por simplicidad, que la lista de gastos est en una hoja llamada Gastos y tiene
solamente dos columnas: rubro e importe. Esta lista ocupa el rango [A5:B15], con los
ttulos en la quinta fila y los datos propiamente dichos a partir de la siguiente. En las
primeras filas de la hoja aparecern los datos de cada vecino, acompaados de ttulos
adecuados:
La lista de vecinos est en una hoja llamada Titulares y tiene tres columnas: piso y
departamento, nombre y apellido, y porcentaje de los gastos que le toca pagar a cada uno.
Esta lista ocupa el rango [A1:C15], con el importe total calculado en [C16], debajo del
ltimo importe.
La macro que generar e imprimir las copias deber recorrer la lista de vecinos y, para
cada uno de ellos, hacer dos cosas:
Imprimir la copia.
Sub Expensas()
Sheets(Gastos).Select
ActiveSheet.PageSetup.PrintArea = A1:D14
For i = 2 To 15
depto = Sheets(Titulares).Cells(i, A)
nombre = Sheets(Titulares).Cells(i, B)
porcentaje = Sheets(Titulares).Cells(i, C)
[B1] = nombre
[B2] = depto
ActiveSheet.PrintOut
Next
End Sub
Sheets(Gastos).Select
ActiveSheet.PageSetup.PrintArea = A1:D14
Luego comienza el recorrido de la lista de titulares con un ciclo For Next. Como la lista
de titulares ocupa siempre el mismo rango, sabemos que este recorrido debe hacerse
desde las filas 2 a la 14, que es donde estn los datos propiamente dichos de los titulares.
Para cada vuelta del ciclo, la macro toma nota de los datos del titular: nmero del
departamento, nombre y apellido del titular y porcentaje de gastos. Como esto lo hace
desde la otra hoja, la de gastos, la referencia a las celdas de la hoja Titulares tiene tres
coordenadas. Por ejemplo, para el nmero de departamento:
depto = Sheets(Titulares).Cells(i, A)
El argumento de Sheets es el nombre de la hoja, escrito entre comillas. Tambin podra ser
el nmero de orden de la hoja en el libro. En este caso, Sheets(2). Separada por un punto,
aparece la instruccin Cells cuyos dos argumentos son la fila y la columna de la celda. La
columna puede indicarse con su letra, escrita entre comillas, o por un nmero: 1 para la A,
2 para la B y as sucesivamente. En la macro hay tres instrucciones de este tipo, una para
cada titular.
Luego copia estos datos a la hoja de gastos. Como esta es la hoja actual, sus celdas
pueden designarse de manera ms simple: se escriben las coordenadas entre corchetes.
Adems, el importe a pagar se obtiene multiplicando el importe total tomado de la celda
[B14] por el porcentaje tomado antes de los datos de los titulares:
[B1] = nombre
[B2] = depto
ActiveSheet.PrintOut
ActiveSheet.PrintPreview
Una vez impresa (o previsualizada) esta hoja, la instruccin Next pasa a la siguiente vuelta
del ciclo, y la siguiente fila de la lista de vecinos. As hasta imprimir todas las copias.
http://www.redusers.com/noticias/trucos/excel-una-macro-para-la-
combinacion-de-correspondencia/
Megagua: Macros y VBA
Qu es una macro?
Se puede definir como un bloque de instrucciones ejecutable y que se
almacena en un mdulo. Al ejecutar una macro, se interpretan las lneas
de cdigo que contiene y se desencadenan las acciones escritas.
Puedes utilizar una macro para acelerar las tareas frecuentes con Excel
y ampliar su utilidad, creando, por ejemplo, nuevas funciones para
resolver clculos que de otra forma sera imposible realizar.
Como te digo, los objetos del modelo de Excel estn organizados por
jerarquas, que significa que unos objetos pueden contener a otros
objetos.
Application.Workbooks(Ventas anuales.xlsx). _
Worksheets(Totales).Range(B2).Select
Workbooks(Ventas anuales.xlsx). _
Worksheets(Totales).Range(B2).Select
Worksheets(Totales).Range(B2).Select
Range(B2).Select
Como he dicho antes, todos los objetos del mismo tipo forman una
coleccin. Las colecciones permiten trabajar con un grupo de objetos
como si de un solo objeto se tratara. Normalmente, el nombre de una
coleccin es el objeto en plural de los objetos que contiene.
Coleccion!Objeto
Coleccion![Objeto]
Coleccion(Objeto)
Coleccion(var)
Coleccion(index)
Var es una variable del tipo String que contiene el nombre del
objeto. Index es el nmero de la posicin que ocupa el objeto dentro de
la coleccin.
Por ejemplo, propiedades del objeto Range pueden ser Name (nombre),
Value (valor) y Column (columna), entre muchos otros.
Range(B2).Font.Size = 25
Objeto.Mtodo
Imagina que cada vez que abras un libro, quieres que aparezca un
mensaje de bienvenida. Para ello se debe trabajar dentro del evento
Open del objeto Workbook de la siguiente manera:
La ficha Desarrollador
No encuentras la ficha Desarrollador en la cinta de opciones? Eso es
porque al instalar Excel, se encuentra oculta. Obviamente debes
mostrarla antes de comenzar a trabajar con ella.
Para mostrar la ficha te recomiendo que hagas clic con el botn derecho
en cualquier parte de la cinta de opciones y selecciones Personalizar la
cinta de opciones. A continuacin activa la casilla de verificacin
correspondiente en la parte de la derecha del cuadro de dilogo.
Microsoft tom medidas hace ya varios aos para prevenir este uso
indebido de Excel, creando un formato de archivo especial para guardar
los libros que contienen macros. Adems, incluy varios niveles de
seguridad.
La extensin .xlsm fue la elegida para designar a los archivos con macros.
En las versiones anteriores a Excel 2007 era imperceptible a menos que
tuvieras habilitados los niveles de seguridad que respectan a las macros.
Ahora, con slo comprobar la extensin del libro podrs determinar si
contiene alguna macro y as decidir si quieres abrirlo o no, en funcin de
la confianza que te genere.
Hace unos aos se pusieron de moda los virus dentro de macros. Estos
virus se aprovechaban de archivos aparentemente inofensivos para
hacer varios tipos de ataque.
El editor de VBA
El editor de Visual Basic for Applications es el lugar donde se
desarrollan, prueban y modifican las macros. Se ejecuta en una ventana
diferente a la de Excel y se accede a ella de estas tres formas:
Haciendo clic en el botn Visual Basic de la ficha Desarrollador.
Cuando ya existe la macro, pulsando el botn Modificar del cuadro
de dilogo Macros, que aparece al pulsar el botn Macros de la
ficha Desarrollador.
Pulsando Alt + F11.
Artculos relacionados:
Sub
Function
Property
El procedimiento Sub
Todos los procedimientos Sub comienzan con la palabra Sub seguida del
nombre que le quieras dar, y finalizan con la instruccin End Sub.
Artculos relacionados
El procedimiento Function
El procedimiento Property
Este tipo de procedimiento se utiliza para crear y personalizar las
propiedades de los objetos de Excel. Se declaran automticamente
como pblicos aunque es posible hacerlo como privados.
Artculos relacionados
Constantes
Declarar una constante se hace de la misma forma que lo haras con una
variable.
Operadores
La funcin InputBox
Es una funcin que permite interactuar con el usuario solicitndole
informacin mientras se ejecuta una macro. Esto se hace mediante un
cuadro de dilogo.
La funcin MsgBox
Algunas veces puede que necesites utilizar estos tipos de datos de forma
diferente al tipo de dato predeterminado. Para esto se utilizan las
funciones de conversin de tipo.
Estructuras de programacin
Las estructuras de programacin te permiten controlar el flujo de la
ejecucin de la macro, desvindolo segn acciones del usuario o
repitiendo ciertas instrucciones. Estas estructuras existen en todos los
lenguajes de programacin y funcionan casi de la misma forma.
If Then
If Then Else
IIf
Select Case
La estructura If Then
En muchas ocasiones necesitars que se ejecuten una o varias
instrucciones slo si se cumple una condicin. Si la condicin no se
cumple, el flujo del cdigo contina normalmente. Este es el contexto
perfecto para utilizar la instruccin If Then. Su sintaxis es la siguiente:
If condicin Then
Instrucciones
End If
If condicin Then
Unas instrucciones
Else
Otras instrucciones
End If
Select Case
Con esta estructura se evala una condicin que puede dar como
resultado un nmero indeterminado de valores, y realizar acciones
segn este resultado. Observa la sintaxis:
Select Case expresin
Case Valor1
Instruccin_1
Instruccin_2
Case Valor2
Instruccin_1
Instruccin_2
Case Valor3
Instruccin_1
Instruccin_2
Case Else
Instruccin_1
Instruccin_2
End Select
With objeto
[instrucciones]
End With
Observa el siguiente ejemplo. En l te muestro cmo poner una fila
entera en negrita, con una fuente Comic Sans de color verde y con
tamao 14:
Sub ejemplo_with()
With Range(1:1).Font
.Bold = True
.Name = Comic Sans MS
.Size = 14
.ColorIndex = 4
End With
End Sub
For Next
For Each Next
Do Loop
For Next
Sub ejemplo_For_Next_Exit()
Dim contrasenia As String
Dim i As Integer
For i = 1 To 5
contrasenia = InputBox(Ingrese contrasea)
If contrasenia = 123 Then
mensaje = 1
Exit For
Else
mensaje = 2
End If
Next
If mensaje = 1 Then
MsgBox Bienvenido al sistema
Else
MsgBox Ha olvidado su contrasea, & _
comunquese con el administrador, _
vbOKOnly + vbCritical
End If
End Sub
Al igual que con los bucles For, tambin es posible salir antes de tiempo
de un bucle Do Loop. Para ello est la instruccin Exit Do.
El objeto Application
Propiedades de Application
Mtodos de Application
Workbooks y Workbook
Worksheets y Worksheet
Propiedades de Range
Mtodos de Range
Los formularios
Gracias a los formularios es posible manejar datos en Excel de forma ms
intuitiva y eficiente, ya que, adems de acelerar el proceso, consigue
evitar los temidos errores de introduccin de datos.
Resumiendo
Si has conseguido seguir la gua completa, enhorabuena! VBA no es
mucho ms que todo esto que te he resumido en 7.000 palabras.
https://www.ayudaexcel.com/megaguia-macros-vba/
Como crear un ndice de hojas
en Excel empleando macros:
Gua Rpida
Daniel Cedeo Urbina 17/11/2013 Excellentias Blog, Macros, Macros
Excel 11 comentarios
Dim L As Long
L=1
With Me
.Columns(1).ClearContents
.Cells(1, 1) = INDICE
End With
L=L+1
With cHoja
End With
Me.Hyperlinks.Add Anchor:=Me.Cells(L, 1), Address:=
, SubAddress:=Inicio & cHoja.Index,
TextToDisplay:=cHoja.Name
End If
Next cHoja
End Sub
EL Equipo EXCELLENTIAS.COM
http://www.excellentias.com/macro-en-excel-para-crear-un-indice-de-hojas/
Pasar datos de Excel a Word
con macros VBA, mejor
mtodo
Escrito por M. Vizcarra el 01/03/2013. Posteado en Excel
Despus de revisar innumerables posts acerca de pasar datos desde Excel hacia Word
encontr la mejor solucin. Esta consiste en enviar los datos desde hojas Excel o
cualquier variable hacia cualquier lugar en Word utilizando el mtodo buscar y
reemplazar con macros VBA en Excel.
La mejor ventaja es que pueden colocar diferentes variables con texto a voluntad,
conservando el formato en cualquier parte de Word, adems permite modificaciones
posteriores. Muy til para disear pequeos aplicativos para gestionar documentos
diversos, como notificaciones, cartas, formatos de inscripcin, sin utilizar la funcin
combinar correspondencia en Word, todo esto se hace desde Excel.
Pasos:
1 Convertir o crear tu documento Word como plantilla, con extension .dotx, Archivo /
Guardar como, luego seleccionan Plantilla de Word (*.dotx), y cuando quieran
utilizarla el documento abrir una copia en vez del original. Para modificar el original
tienen que abrirlo desde Archivo / Abrir, en Word.
Sub exportaraword1()
objWord.Visible = True
textobuscar = "[reemp_nombre]"
objWord.Selection.Find.Execute FindText:=textobuscar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
objWord.Activate
End Sub
Sub exportaraword2()
objWord.Visible = True
datos(0, 0) = "[reemp_nombre]"
datos(0, 1) = "[reemp_direccion]"
datos(1, 1) = Hoja1.cells(2,1)
datos(0, 2) = "[reemp_telefono]"
datos(1, 2) = Hoja1.cells(3,1)
For i = 0 To UBound(datos, 2)
textobuscar = datos(0, i)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next i
objWord.Activate
End Sub
Espero que este cdigo les haya servido, an no lo pruebo en Excel 2007, solamente
en Excel 2010. Dejo los archivos de ejemplo para quepuedan descargarlo. No olviden
dejar sus agradecimientos, buen da para todos.
http://desref.com/pasar-datos-de-excel-a-word-con-macros-vba-mejor-
metodo/
http://www.nerdilandia.com/curso-gratis-en-espanol-para-aprender-macros-
en-excel-2013/
http://www.forosdelweb.com/f90/macro-para-hacer-hipervinculos-506515/
http://www.cs.us.es/cursos/ai-2003/Lecciones/cuentas_a_30.htm
http://www.programarexcel.com/2013/07/seleccionar-o-hacer-referencia-
hojas.html