Excel VBA Code/Excel Macros / Complementos para Excel/vba macros/vba samples Excel Macros/Excel VBA/Excel Add-ins /Microsoft Excel/Spreadsheet Tools/Charts
sábado, 1 de noviembre de 2008
Trabajar con userform 0.2
Trabajar con userform
---------------------
Añadir controles al formulario
Para agregar controles a su formulario empleara el cuadro de herramientas .Si el cuadro de herramientas no esta visible ,seleccione Ver , Cuadro de herramientas del menu VER
Puede agrgar su controles dando click en el control y luego arrastrando al formulario o puede dar click en el control y luego dar click en la sección del formulario donde desea insertar.
Cada vez que agregamos un control se le asigna el nombre de control mas indicador de secuencia numerica
por ejemplo cada vez que agreguemos un label..el primero sera label1..el segundo label2..etc..claro que siempre
sera posible renombrar los controles por nombres mas convenientes
Para cambiar el nombre de un contro debe seleccionar el control ... ir al ventana de propiedades y elegir la
propiedad nombre y asignar el nombre que desea.
Algunos Controles
------------------
Label(etiqueta) :Este control mostrara un texto dentro del useform
Cuadro de texto(TextBox): Permite al usuario introducir texto
Cuadro combinado(ComboBox) :permitira contener un listado de elementos pero solo mostrara uno la vez hasta ser desplegado .
Cuadro de Lista(ListBox) : Permite mostrar una lista de elementos donde le usuario puede realizar la selección de uno o varios.
Casilla de verificación(CheckBox):
Son utiles cuando el usuario necesita indicar varias opciones .La casilla de verificacion marcada tiene el valor de verdadero.
Boton de opcion(OptionButton).Se empleara cuando solo sea posible elegir uan sola opcion entre varias.
Cuando uno de los botones esta activado(valor true) el resto de botones se desactivara .
Control imagen(Image).Se emplea para mostrar una imagen desde un archivo o cargarse desde el portapapeles.
RefEdit.Le Permitira al usuario seleccionar un rango de celdas.
Para identificar los controles en el cuadro de herramientas simplemente coloquese sobre algun control y aparecera una etiqueta con el nombre del control.
Etiquetas:
excel vba formulario controles,
excelvba userform,
insertar control,
insertar control vba,
propiedades control vba excel,
trabajar con userform,
userform vba excel vba
domingo, 26 de octubre de 2008
Trabajar con userform 0.1
Trabajar con UserForm 0.1
-------------------------
Mediante los userform podremos crear los cuadro de dialogo personalizados.
1) Active el editor (ALT+F11)
Ahora presione el boton insertar userform
o tambien ...
Pude dar click derecho en algun objeto de su proyecto como (Thisworkbook o alguna hoja)
*ya creado nuestro formulario podemos realizarle una serie de personalizaciones deacuerdo al gusto o
conveniencia.
Normalmente deseara cambiarle el nombre para identificarlo de manera más simple..
Para acceder a las propiedades para este objeto seleccione el useform en su proyecto y presione "F4"
ahora podemos manipular las propiedades.
cambie el nombre por el sgte Usf_example1
en la propiedad Backcolor despliegue las opciones y elija un color.
otro de los detalles iniciales seria la forma de ocultar o mostrar el formulario
Ahora inserte un modulo y coloque el sgte codigo
Sub call_form()
Usf_example1.Show 'mostrar el formulario
End Sub
De igual manera puede ocultar o descargar el formulario de la sgte forma
'Unload Me 'descargar ..use unload me ...si el codigo esta dentro del formulario
*ahora cierra su formulario y vaya al editor de codigo
Para este ejemplo primero cambie la propiedad ShowModal a False y corra la sgte macro linea por linea (presione F8 estando con el cursor sobre la macro call_form1)
Sub call_form1()
Usf_example1.Show 'mostrar form
Usf_example1.Hide 'ocultar
Usf_example1.Show 'mostrar
Unload Usf_example1 'descargar el form .desde un modulo
End Sub
domingo, 14 de septiembre de 2008
Metodo GetSaveAsFileName de Excel
El metodo GetSaveAsFileName de Excel
* Despliega el cuadro de dialogo guardar como y permite la seleccion de un archivo
* Devuelve un nombre de archivo y ruta ,pero no inicia ninguna acción .
Sintaxis
Nombre inicial de archivo :Opcional(especifica el nombre del archivo)
Filtro de archivo :Opcional. una cadena especificando el criterio de filtro archivo
Filterindex Opcional .Los numeros del indice por defecto
Titulo .Opcional .El titulo del cuadro de dialogo
ButtonText .Solo para macintosh
Ejemplo de empleo del metodo GetSaveAsFileName de Excel
Sub GetSaveasFilename()
Dim fileSaveName As String
fileSaveName = Application.GetSaveasFilename(fileFilter:="Excel Files (*.xls), *.xls")
If fileSaveName <> False Then
ActiveWorkbook.SaveAs (fileSaveName)
MsgBox "El libro se guardo en :" & fileSaveName
End If
End Sub
* Despliega el cuadro de dialogo guardar como y permite la seleccion de un archivo
* Devuelve un nombre de archivo y ruta ,pero no inicia ninguna acción .
Sintaxis
Nombre inicial de archivo :Opcional(especifica el nombre del archivo)
Filtro de archivo :Opcional. una cadena especificando el criterio de filtro archivo
Filterindex Opcional .Los numeros del indice por defecto
Titulo .Opcional .El titulo del cuadro de dialogo
ButtonText .Solo para macintosh
Ejemplo de empleo del metodo GetSaveAsFileName de Excel
Sub GetSaveasFilename()
Dim fileSaveName As String
fileSaveName = Application.GetSaveasFilename(fileFilter:="Excel Files (*.xls), *.xls")
If fileSaveName <> False Then
ActiveWorkbook.SaveAs (fileSaveName)
MsgBox "El libro se guardo en :" & fileSaveName
End If
End Sub
Msgbox
'MsgBox II
'En ocasiones sera necesario forzar rotura de lineas en los mensajes que muestre
'El sgte es un ejemplo de esta situación.
Sub msgboxII()
Dim msg As String
Dim rpt As Byte
msg = "Usted debe asegurarse siempre " & vbCrLf
msg = msg & "de evitar que los usuarios manipulen " & vbCrLf
msg = msg & "Información de otras areas ¿Esta cumpliendo con esa tarea ?"
rpt = MsgBox(msg, vbYesNo + vbQuestion)
If rpt = vbYes Then
MsgBox "Realice las sgtes tareas"
Else
MsgBox "Revise nuevamente"
End If
End Sub
'En ocasiones sera necesario forzar rotura de lineas en los mensajes que muestre
'El sgte es un ejemplo de esta situación.
Sub msgboxII()
Dim msg As String
Dim rpt As Byte
msg = "Usted debe asegurarse siempre " & vbCrLf
msg = msg & "de evitar que los usuarios manipulen " & vbCrLf
msg = msg & "Información de otras areas ¿Esta cumpliendo con esa tarea ?"
rpt = MsgBox(msg, vbYesNo + vbQuestion)
If rpt = vbYes Then
MsgBox "Realice las sgtes tareas"
Else
MsgBox "Revise nuevamente"
End If
End Sub
domingo, 24 de agosto de 2008
GETOPENFILENAME(Metodo GetOpenfilename De EXCEL)
'Metodo GetOpenfilename De EXCEL
'------------------------------
'Este metodo nos permite desplegar el cuadro de dialogo abrir (del menu archivo) pero no abre el archivo indicado.
'*El metodo nos devuelve uan cadena con la ruta y nombre del archivo seleccionado.
'Sintaxis
'--------
'Object.GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,Multiselect)
'FileFilter> Opcional.Una serie especifica con criterios de filtro de archivo.
'FilterIndex> Opcional.Los numeros del indice por defecto bajo criterios de filtro de archivo.
'Titulo > Opcional .El titulo del cuadro de dialogo.si se omite,el titulo.. mostrara "Abrir"
'ButtonText>Solo para Macintosh
'Multiselect >Opcional . Si es verdadero,se pueden seleccionar varios nombres de archivos
'El argumento Filtro de archivo determinalo que muestra el cuadro de dialogo de los archivos del tipo lista desplegable.
'*Consiste en pares de series de filtro de archivo seguido del comodin especificado.
'*Si se omite sera por defecto : "All File(*.*),*.*"
'Ejemplo
'-------
'El argumento Filterindex especificara el tipo de archivo que aparece por defecto,
'el titulo del argumento es un texto que se despliega en la barra del titulo.
'
'*si el argumento de multiselect es verdadero,el usuario puede seleccionar varios archivos(y se devolveran en una serie)
Sub abreArchivo()
Dim filtrox As String
Dim FilterIndex As Integer
Dim titulo As String
Dim nombreArchivo As Variant
'Configurar Filtro para la lista de archivos
filtrox = "Archivos de texto (*.txt),*.txt," & _
"Word(*.doc),*.doc, " & _
"Excel (*.xls), *.xls, " & _
"Power Point(*.ppt), *.ppt, " & _
"Todos los archivos (*.*),*.* "
'Mostrar por defecto todos los archivos
FiltroIndex = 3
titulo = "Ejemplo"
'Obtener Nombre del archivo
nombreArchivo = Application.GetOpenFilename(FileFilter:=filtrox, FilterIndex:=FiltroIndex, Title:=titulo)
End Sub
Etiquetas:
abrir archivos desde excel,
abrir archivos vba excel,
abrir libro macro excel,
getopenfile vba excel,
GETOPENFILENAME(Metodo GetOpenfilename De EXCEL),
open file
domingo, 13 de julio de 2008
La función MSGBOX
La funcion MsgBox
Creo que ya empleamos en algunos ejemplos esta función ...pero es mejor que sobre conocimientos a que falte.
Esta funcion nos mostrara un cuadro de dialogo con el que el usuario podra interactuar.
La sintaxis consta de 5 argumentos
Ejemplo
-------
Msgbox (prompt [,buttons] [,title] [helpfile,context])
*los argumentos entre corchete son opcionales
-prompt :El mensaje desplegado instantaneamente en el cuadro.
-Buttons :Indicaremos que botones e iconos aparecen.
-Title :Por defecto aparecera Excel en el caso no indiquemos alguno.
-Helpfile:El nombre de la fila de ayuda asociado con el cuadro de dialogo
-Context :Representa un topico de ayuda
'--------------------------------
Sub ejemplo_msgboxvba()
MsgBox "!Accion no permitida!...", vbCritical, "Precaución"
res = MsgBox("¿Deseas Continuar?", _
vbYesNo + vbQuestion, "Lista de precios")
End Sub
*Si la respuesta es afirmativa el valor de la variable res sera 6
en el caso contrario sera 7
Creo que ya empleamos en algunos ejemplos esta función ...pero es mejor que sobre conocimientos a que falte.
Esta funcion nos mostrara un cuadro de dialogo con el que el usuario podra interactuar.
La sintaxis consta de 5 argumentos
Ejemplo
-------
Msgbox (prompt [,buttons] [,title] [helpfile,context])
*los argumentos entre corchete son opcionales
-prompt :El mensaje desplegado instantaneamente en el cuadro.
-Buttons :Indicaremos que botones e iconos aparecen.
-Title :Por defecto aparecera Excel en el caso no indiquemos alguno.
-Helpfile:El nombre de la fila de ayuda asociado con el cuadro de dialogo
-Context :Representa un topico de ayuda
'--------------------------------
Sub ejemplo_msgboxvba()
MsgBox "!Accion no permitida!...", vbCritical, "Precaución"
res = MsgBox("¿Deseas Continuar?", _
vbYesNo + vbQuestion, "Lista de precios")
End Sub
*Si la respuesta es afirmativa el valor de la variable res sera 6
en el caso contrario sera 7
domingo, 22 de junio de 2008
InputBox(cuadro de entrada)
'Cuadro de dialogo de entrada
'
'Nos permitira ingresar un texto,numero o rango
'
'Sintaxis para funcion InputBox de VBA
'
'
'InputBox([prompt],[Title],[Default],{xpos],[ypos],[help file,context])
'
'Prompt : Es el texto mostrado en el cuadro de dialogo
'
'Title :(opcional)Texto de titulo para el cuadro de dialogo
'
'Default :Valor por defecto mostrado en el cuadro de dialogo
'
'Xpos,Ypos :La patalla se ubicar segun las cordenadas
'
'Helpfile ,context (opcional).el archivo de ayuda
'
'Type :Opcional.El tipo de dato devuelto como se ve en la siguiente tabla.
'
'codigo --> SIGNIFICADO
'------
'0 -----> Una fórmula
'1 -----> Un numero
'2 -----> Una cadena(texto)
'4 -----> Un valor logico(True o False)
'8 -----> Una celda de referencia ,como un objeto de rango
'16 -----> Un error de valor,como #N/A
Sub nombres()
Dim i As String
Dim a As Integer
Range("A1:A20").Select 'selecccionamos rango de trabajo
For a = 0 To Selection.Cells.Count 'relizar repeticiones para cada una de las celdas
i = (InputBox("Ingrese su nombre", "Nombre")) 'recuperamos ldsa cadena del input box
ActiveCell.Offset(a, 0).Value = i 'bajamos por las celdas de la seleccion de 1 en 1
Next a
End Sub
Sub beneficio()
Dim u As Long
Do
u = Val(InputBox("Ingrese beneficio", "Beneficio logrado"), "x") 'recuperar beneficio
Loop While u > 0 'CONTINUAR MIENTRAS > 0
End Sub
Etiquetas:
ejemplo inputbox vba,
excel inputbox macros,
macro inputbox,
vba inputbox
sábado, 17 de mayo de 2008
Arrays
Arrays Dinámicos
Lo emplearemos Cuando el numero de elementos para una dimensión del array no sean las mismas.
Dim ArrayDinamic() 'dejamos vacios los parentesis
Sub recontar_items
ReDim Array(a) 'para asignar el espacio al array
Array(a) =34 *pero ojo que los valores no se mantendran
'si deseamos conservar los valores emplaremos
redim preserve nombrearray(numero)=valor
Redim preserve Array(a)=34 'conservamos los valores
End sub
La sentencia ReDim permite cambiar el número de elementos del array, no el número de dimensiones.
Por ejemplo, si declaramos el array_A a nivel de un módulo.
Private Array_A() as Integer
Para asignarle espacio al array utilizamos:
ReDim Array_A(5)
Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el array se pierden. Cuando le interese cambiar el tamaño del array conservando los valores del array,
use ReDim con la palabra clave Preserve.
Por ejemplo
ReDim Preserve Array_A(8)
Lo emplearemos Cuando el numero de elementos para una dimensión del array no sean las mismas.
Dim ArrayDinamic() 'dejamos vacios los parentesis
Sub recontar_items
ReDim Array(a) 'para asignar el espacio al array
Array(a) =34 *pero ojo que los valores no se mantendran
'si deseamos conservar los valores emplaremos
redim preserve nombrearray(numero)=valor
Redim preserve Array(a)=34 'conservamos los valores
End sub
La sentencia ReDim permite cambiar el número de elementos del array, no el número de dimensiones.
Por ejemplo, si declaramos el array_A a nivel de un módulo.
Private Array_A() as Integer
Para asignarle espacio al array utilizamos:
ReDim Array_A(5)
Cada vez que se ejecuta la sentencia ReDim, todos los valores almacenados en el array se pierden. Cuando le interese cambiar el tamaño del array conservando los valores del array,
use ReDim con la palabra clave Preserve.
Por ejemplo
ReDim Preserve Array_A(8)
Arrays
Ejemplo Array multidimensional
2 dimensiones
ReDim Arrjugadores(0 to 1, 0 to 11) As String
'Mejores futobolistas Europa
Arrjugadores(0, 0) = "Zinedine Zidane "
Arrjugadores(0, 1) = "Henry"
Arrjugadores(0, 2) = "Owen"
Arrjugadores(0, 3) = "Raul"
Arrjugadores(0, 4) = "Ruud van Nistelrooy"
Arrjugadores(0, 5) = "Shevchenko"
Arrjugadores(0, 6) = "Lilian Thuram"
Arrjugadores(0, 7) = "Nesta"
Arrjugadores(0, 8) = "Davor Zucker"
Arrjugadores(0, 9) = "Bergkamp"
Arrjugadores(0, 10) = "Figo"
Arrjugadores(0, 11) = "Cristiano Ronaldo"
'Mejores futobolistas America
Arrjugadores(1, 0) = "Ronaldo"
Arrjugadores(1, 1) = "Batistuta"
Arrjugadores(1, 2) = "Enzo Franchescoli"
Arrjugadores(1, 3) = "Romario"
Arrjugadores(1, 4) = "Ortega"
Arrjugadores(1, 5) = "Ronaldinho"
Arrjugadores(1, 6) = "Roberto carlos"
Arrjugadores(1, 7) = "Emerson"
Arrjugadores(1, 8) = "KaKa"
Arrjugadores(1, 9) = "Rivaldo"
Arrjugadores(1, 10) = "Adriano"
Arrjugadores(1, 11) = "Gamarra"
*Para borrar los elementos del array
erase Arrjugadores
2 dimensiones
ReDim Arrjugadores(0 to 1, 0 to 11) As String
'Mejores futobolistas Europa
Arrjugadores(0, 0) = "Zinedine Zidane "
Arrjugadores(0, 1) = "Henry"
Arrjugadores(0, 2) = "Owen"
Arrjugadores(0, 3) = "Raul"
Arrjugadores(0, 4) = "Ruud van Nistelrooy"
Arrjugadores(0, 5) = "Shevchenko"
Arrjugadores(0, 6) = "Lilian Thuram"
Arrjugadores(0, 7) = "Nesta"
Arrjugadores(0, 8) = "Davor Zucker"
Arrjugadores(0, 9) = "Bergkamp"
Arrjugadores(0, 10) = "Figo"
Arrjugadores(0, 11) = "Cristiano Ronaldo"
'Mejores futobolistas America
Arrjugadores(1, 0) = "Ronaldo"
Arrjugadores(1, 1) = "Batistuta"
Arrjugadores(1, 2) = "Enzo Franchescoli"
Arrjugadores(1, 3) = "Romario"
Arrjugadores(1, 4) = "Ortega"
Arrjugadores(1, 5) = "Ronaldinho"
Arrjugadores(1, 6) = "Roberto carlos"
Arrjugadores(1, 7) = "Emerson"
Arrjugadores(1, 8) = "KaKa"
Arrjugadores(1, 9) = "Rivaldo"
Arrjugadores(1, 10) = "Adriano"
Arrjugadores(1, 11) = "Gamarra"
*Para borrar los elementos del array
erase Arrjugadores
Etiquetas:
ARRAYS EJEMPLOS,
arrays vb,
ejemplo array multimensional,
macros array,
vba arrays
domingo, 11 de mayo de 2008
Arrays
Arrays
Mediante un array podemos refererirnos a una "serie de elementos" por un "mismo nombre" y referenciara un elemento de la serie por un numero de indice.
ArraySuperClubes(1)="Real Madrid"
ArraySuperClubes(2)="Barcelona"
ArraySuperClubes(3)="Milan"
ArraySuperClubes(4)="Inter de Milan"
ArraySuperClubes(5)="Manchester United"
En este ejemplo lo comprobaremos con mayor claridad
1) Nos referimos a una serie de elementos por un mismo nombre en este caso sera ArraySuperClubes.
Por ejemplo bastaria algo como la sgte instruccion para cargar los elementos de nuestro array en un control listbox1
ArraySuperClubes representa a los 5 elementos de nuestro array
listbox1.list=ArraySuperClubes
2) Referenciamos a un elemento de la serie por un numero de indice.
Por ejemplo
Si quisieramos referenciar al elemento "3" de nuestro ArraySuperClubes()
Msgbox ArraySuperClubes(3)
nota:Al igual que con la declaración de variables debemos tener en cuenta
Arrays de variables (estático)
Significa que nuestro array tendra un numero fijo de elementos
Aqui es importante tener en cuenta el ambito de declaración del array tal y como
se hace con las variables de manera cotidiana.
-Es decir a nivel de procedimiento , modulo o pubico (disponible para todo el proyecto)
Ejemplos:
Dim Array_Spain(20) as string
'se declaro un array de 21 elementos que van desde el indice cero..
Array_Spain(0),
Array_Spain(1),
Array_Spain(21)
Dim ArrayBidimensionalXy(1 to 4,1 to 4)as integer
'se declaro array de 2 dimensiones
ArrayBidimensional, con 4*4 elementos ArrayBidimensional(1,1)...ArrayBidimensional(4,4)
Public New_X(1 To 20) As String *20
Public New_X(1)...Public New_X(20),
cada elemento permite almacenar una cadena de (20 caracteres).
Mediante un array podemos refererirnos a una "serie de elementos" por un "mismo nombre" y referenciara un elemento de la serie por un numero de indice.
ArraySuperClubes(1)="Real Madrid"
ArraySuperClubes(2)="Barcelona"
ArraySuperClubes(3)="Milan"
ArraySuperClubes(4)="Inter de Milan"
ArraySuperClubes(5)="Manchester United"
En este ejemplo lo comprobaremos con mayor claridad
1) Nos referimos a una serie de elementos por un mismo nombre en este caso sera ArraySuperClubes.
Por ejemplo bastaria algo como la sgte instruccion para cargar los elementos de nuestro array en un control listbox1
ArraySuperClubes representa a los 5 elementos de nuestro array
listbox1.list=ArraySuperClubes
2) Referenciamos a un elemento de la serie por un numero de indice.
Por ejemplo
Si quisieramos referenciar al elemento "3" de nuestro ArraySuperClubes()
Msgbox ArraySuperClubes(3)
nota:Al igual que con la declaración de variables debemos tener en cuenta
Arrays de variables (estático)
Significa que nuestro array tendra un numero fijo de elementos
Aqui es importante tener en cuenta el ambito de declaración del array tal y como
se hace con las variables de manera cotidiana.
-Es decir a nivel de procedimiento , modulo o pubico (disponible para todo el proyecto)
Ejemplos:
Dim Array_Spain(20) as string
'se declaro un array de 21 elementos que van desde el indice cero..
Array_Spain(0),
Array_Spain(1),
Array_Spain(21)
Dim ArrayBidimensionalXy(1 to 4,1 to 4)as integer
'se declaro array de 2 dimensiones
ArrayBidimensional, con 4*4 elementos ArrayBidimensional(1,1)...ArrayBidimensional(4,4)
Public New_X(1 To 20) As String *20
Public New_X(1)...Public New_X(20),
cada elemento permite almacenar una cadena de (20 caracteres).
Etiquetas:
ARRAYS EJEMPLOS,
ARRAYS ESTATICOS,
Arrays VBA EXCEL,
buvles for next vba excel vba bucles excel,
EXCEL VB CODE,
MACROS VBA EJEMPLO ARRAY,
vba,
VBA CODE EJEMPLO,
VBA EXCEL ARRAYS
domingo, 20 de abril de 2008
For Each ..Next
La instruccion For Each..Next repite instrucciones para cada uno de los objetos de una colección
determinada.
Modificaremos un poco un ejemplo visto anteriormente sobre los colores del libro para
obtener el mismo resultado.
Pero esta vez haremos referencia a colecciones de objetos.
Sub obtener_los_56_colores()
'aqui es conocido que El Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim rango_a_pintar As Range
Dim celda As Range
Dim a As Byte
Set rango_a_pintar = Range("A1:A56") 'asignamos el rango que necesitamos
For Each celda In rango_a_pintar 'repetir en cada uno de los elementos de la coleccion
a = a + 1
celda.Interior.ColorIndex = a 'asignar colores del libro a respectiva celda
Next celda
End Sub
determinada.
Modificaremos un poco un ejemplo visto anteriormente sobre los colores del libro para
obtener el mismo resultado.
Pero esta vez haremos referencia a colecciones de objetos.
Sub obtener_los_56_colores()
'aqui es conocido que El Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim rango_a_pintar As Range
Dim celda As Range
Dim a As Byte
Set rango_a_pintar = Range("A1:A56") 'asignamos el rango que necesitamos
For Each celda In rango_a_pintar 'repetir en cada uno de los elementos de la coleccion
a = a + 1
celda.Interior.ColorIndex = a 'asignar colores del libro a respectiva celda
Next celda
End Sub
Estructuras de Repeticion (Bucles For ..Next )
Las estructuras For...Next las emplearemos en los casos cuando s conocemos el numero de veces que es necesario repetir la ejecuion de determinadas instrucciones
Sub obtener_los_56_colores()
'aqui es conocido que Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim a As Byte
Range("A1:A56").Select
For a = 1 To 56 'repetir 56 veces
Selection.Cells(a).Interior.color = ActiveWorkbook.Colors(a)
'asignar colores del libro a la respectiva celda
Next a
End Sub
Sub obtener_los_56_colores()
'aqui es conocido que Excel maneja una paleta de 56 colores
'entonces sabemos tambien que es necesario repetir cierta seccion del codigo
Dim a As Byte
Range("A1:A56").Select
For a = 1 To 56 'repetir 56 veces
Selection.Cells(a).Interior.color = ActiveWorkbook.Colors(a)
'asignar colores del libro a la respectiva celda
Next a
End Sub
Estructuras de Repetición
Las estructuras de repeticion son usadas para ejecutar una o mas instrucciones repetidas veces
Do...Loop
---------
Nos permitira ejecutar un bloque de instrucciones durante un numero indefinido de veces
*Pero mientras una condición sea (TRUE)Verdadera o hasta que llegue hacer verdadera.
El sgte es un ejemplo de una macro que comprueba la condicion sea true al inicio para poder continuar con las repeticiones
'primero ingresa valores en una columna ...por ejemplo de A1 a A5
'ahora colocate sobre la celda A1
Sub EJEMPLO_DO_LOOP() 'verificar condicion al inicio
'esta macro suma el valor de la variable "I"
'al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera'
y continua entonces la ejecucion del bucle
Dim I As Integer
Do While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion "no 'sea vacio
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop
End Sub
Sub EJEMPLO_DO_LOOP1() 'verificar al final
'esta macro suma el valor de la variable "I" al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera pero al final es decir
'despues de haber ejecutado la menos una vez el bucle
Dim I As Integer
Do
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion
'no sea vacio
End Sub
Do...Loop
---------
Nos permitira ejecutar un bloque de instrucciones durante un numero indefinido de veces
*Pero mientras una condición sea (TRUE)Verdadera o hasta que llegue hacer verdadera.
El sgte es un ejemplo de una macro que comprueba la condicion sea true al inicio para poder continuar con las repeticiones
'primero ingresa valores en una columna ...por ejemplo de A1 a A5
'ahora colocate sobre la celda A1
Sub EJEMPLO_DO_LOOP() 'verificar condicion al inicio
'esta macro suma el valor de la variable "I"
'al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera'
y continua entonces la ejecucion del bucle
Dim I As Integer
Do While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion "no 'sea vacio
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop
End Sub
Sub EJEMPLO_DO_LOOP1() 'verificar al final
'esta macro suma el valor de la variable "I" al valor de cada celda
'la palabra clave While verifica la condicion sea verdadera pero al final es decir
'despues de haber ejecutado la menos una vez el bucle
Dim I As Integer
Do
I = I + 100
If IsNumeric(Selection) Then Selection.Value = Selection.Value + I
Selection.Offset(1, 0).Select
Loop While Not IsEmpty(Selection) 'las repeticiones continuran siempre y cuando la seleccion
'no sea vacio
End Sub
Etiquetas:
do loop,
do while verdero,
loop,
Repeticiones Vba Bucles Do while true,
repetir instrucciones,
while
jueves, 20 de marzo de 2008
Select Case
Tenemos la posibilidad de emplear alternativamente la instrucciones SELECT CASE por los bloques "IF...THEN..ENDIF" .
Sub cases()
Dim ventas As Integer
Dim totales As Integer
ventas = 50
Select Case ventas 'casos para ventas
Case Is = 30 'si es 30
totales = 30 * 12 'calcular
Case Is = 40 'si es 40
totales = 40 * 13 'calcular
Case Is = 50 'si es 50
totales = 50 * 14 'calcular
Case Else 'caso contrario
totales = 60 * 25 'calcular
End Select
MsgBox totales 'mostrar totales
End Sub
Sub cases()
Dim ventas As Integer
Dim totales As Integer
ventas = 50
Select Case ventas 'casos para ventas
Case Is = 30 'si es 30
totales = 30 * 12 'calcular
Case Is = 40 'si es 40
totales = 40 * 13 'calcular
Case Is = 50 'si es 50
totales = 50 * 14 'calcular
Case Else 'caso contrario
totales = 60 * 25 'calcular
End Select
MsgBox totales 'mostrar totales
End Sub
Estructuras de Control ( [ IF..End if] - [ Select case..End Select]
Vba nos permite emplear varias estructuras de control y asi podemos escribir codigo que tome decisiones y repita algunas acciones
IF..Then:
La emplearemos para ejecutar instrucciones dependiendo del valor de una condición.
Sintaxis de una sola linea(ejecuta una instruccion si la condicion es true
---------------------------------------------------------------------------------
'si la celda activa es 500 ..entonces la celda activa sera ahora ..500+100
if activecell.value=500 then activecell.value=500+100
Sintaxis de varias lineas(ejecutara varias instrucciones si la condicion es
-----------------------------------------------------------------------------------
true)
------
Sub test()
If ActiveCell.Value = 600 Then
MsgBox "la celda tiene el valor de 600" 'instruccion1
ActiveCell.Interior.ColorIndex = 3 'instruccion 2
End If
End Sub
IF ..Then..Else
-----------------
Esta estructura Ejecutara determinadas instrucciones si la condicion es TRUE
y otras si la condicion es FALSE
*Ejemplo para 2 posibilidades
IF activecell.value=600 then 'si es 600 then
activecell.value=700 'cambiar por 700
Else 'caso contrario
activecell.value=0 'cambiar por cero
End if
*Ejemplo para varias posibilidades
Sub variosIF()
If ActiveCell.Value = 800 Then 'condicion1
MsgBox "la celda tiene 800 como valor"
ActiveCell.Interior.ColorIndex = 4
ElseIf ActiveCell.Value = 900 Then 'condicion2
MsgBox "la celda tiene 900 como valor"
ActiveCell.Interior.ColorIndex = 5
ElseIf ActiveCell.Value = 910 Then 'condicion3
MsgBox "la celda tiene 910 como valor"
ActiveCell.Interior.ColorIndex = 6
Else 'en el caso no cumpla con las codiciones anteriores
MsgBox "la celda es diferente de 800,900,910 o tal vez esta vacia"
End If
End Sub
IF..Then:
La emplearemos para ejecutar instrucciones dependiendo del valor de una condición.
Sintaxis de una sola linea(ejecuta una instruccion si la condicion es true
---------------------------------------------------------------------------------
'si la celda activa es 500 ..entonces la celda activa sera ahora ..500+100
if activecell.value=500 then activecell.value=500+100
Sintaxis de varias lineas(ejecutara varias instrucciones si la condicion es
-----------------------------------------------------------------------------------
true)
------
Sub test()
If ActiveCell.Value = 600 Then
MsgBox "la celda tiene el valor de 600" 'instruccion1
ActiveCell.Interior.ColorIndex = 3 'instruccion 2
End If
End Sub
IF ..Then..Else
-----------------
Esta estructura Ejecutara determinadas instrucciones si la condicion es TRUE
y otras si la condicion es FALSE
*Ejemplo para 2 posibilidades
IF activecell.value=600 then 'si es 600 then
activecell.value=700 'cambiar por 700
Else 'caso contrario
activecell.value=0 'cambiar por cero
End if
*Ejemplo para varias posibilidades
Sub variosIF()
If ActiveCell.Value = 800 Then 'condicion1
MsgBox "la celda tiene 800 como valor"
ActiveCell.Interior.ColorIndex = 4
ElseIf ActiveCell.Value = 900 Then 'condicion2
MsgBox "la celda tiene 900 como valor"
ActiveCell.Interior.ColorIndex = 5
ElseIf ActiveCell.Value = 910 Then 'condicion3
MsgBox "la celda tiene 910 como valor"
ActiveCell.Interior.ColorIndex = 6
Else 'en el caso no cumpla con las codiciones anteriores
MsgBox "la celda es diferente de 800,900,910 o tal vez esta vacia"
End If
End Sub
lunes, 3 de marzo de 2008
Bug en Excel 2007
En Excel 2007 algunas operaciones, en las que el resultado debería ser
normalmente 65535 se muestra con el número 100000 como resulatdo . Esto es un problema serio y podría afectar a todos los cálculos posteriores que se hagan con ese valor.
Excel 2007
Excel 2003
Pero ya tendria solucion
------------------------------
Solo visiten este enlace y decarguen el parche correspondiente:
http://blogs.msdn.com/excel/archive/2007/10/09/calculation-issue-update-fix-available.aspx
normalmente 65535 se muestra con el número 100000 como resulatdo . Esto es un problema serio y podría afectar a todos los cálculos posteriores que se hagan con ese valor.
Excel 2007
Pero ya tendria solucion
------------------------------
Solo visiten este enlace y decarguen el parche correspondiente:
http://blogs.msdn.com/excel/archive/2007/10/09/calculation-issue-update-fix-available.aspx
Etiquetas:
Bug excel,
correccion bug de excel,
Excel 2007,
parche excel 2007
domingo, 24 de febrero de 2008
Funciones Definidas por el usuario
Funciones definidas por el usuario
----------------------------------------
*una funcion acepta valores luego
realizara los calculos y nos devolvera
una respuesta.
1.creamos unha function con el nombre doble
Function doble(numero)'el argumento pasado se llama numero
doble= numero*numero 'la function nos devuelve numero*numero
end function
2.Ahora vamos al excel y en la formula para una celda
cualquiera escribimos
=Doble(3)
*listo la celda debe devolver como valor 9
----------------------------------------
*una funcion acepta valores luego
realizara los calculos y nos devolvera
una respuesta.
1.creamos unha function con el nombre doble
Function doble(numero)'el argumento pasado se llama numero
doble= numero*numero 'la function nos devuelve numero*numero
end function
2.Ahora vamos al excel y en la formula para una celda
cualquiera escribimos
=Doble(3)
*listo la celda debe devolver como valor 9
Etiquetas:
codigo vba excel Funciones definidas por el usuario,
ejmplo de Funciones definidas por el usuario,
excel vba code Funciones definidas por el usuario
sábado, 16 de febrero de 2008
Pasando datos a procedimientos
En VBA Tenemos siempre la posibiliodad de llamar a otro procedimiento
para pasarle datos o variables.
Por ejemplo
-----------
En este sencilo ejemplo se ve claramente como pasar un dato a otro procediento
'solo debes pegar el codigo en modulo
'y correrlo
Sub pasando_un_dato()
Dim celda As Range
Set celda = Range("A1") 'asignamos la refrencia la celda A1
celda.Value = 399 * 2 'colocamos un valor a la celda
'invocamos al procedimiento:
'calculador_datos(y le pasamos
'el valor de la propiedad value de la celda)
calculador_datos (celda.Value )
End Sub
Sub calculador_datos(valor)
'el procedimiento recibe el valor de celda.value
Dim total As Integer
total = 12 * valor 'la variable total ahora sera igual a 12* valor(celda.value)
MsgBox "el total es..." & total 'mostramos el resultado
End Sub
para pasarle datos o variables.
Por ejemplo
-----------
En este sencilo ejemplo se ve claramente como pasar un dato a otro procediento
'solo debes pegar el codigo en modulo
'y correrlo
Sub pasando_un_dato()
Dim celda As Range
Set celda = Range("A1") 'asignamos la refrencia la celda A1
celda.Value = 399 * 2 'colocamos un valor a la celda
'invocamos al procedimiento:
'calculador_datos(y le pasamos
'el valor de la propiedad value de la celda)
calculador_datos (celda.Value )
End Sub
Sub calculador_datos(valor)
'el procedimiento recibe el valor de celda.value
Dim total As Integer
total = 12 * valor 'la variable total ahora sera igual a 12* valor(celda.value)
MsgBox "el total es..." & total 'mostramos el resultado
End Sub
Etiquetas:
codigo procedimiento,
ejemplo paso de datso vba excel procedimiento,
excel vba code pasando datos entre procedimientos,
procedimientos datos vba excel
viernes, 8 de febrero de 2008
Invocar a una macro (procedimiento)
Esn este ejemplo el procedimiento "Sub Principal" llama al procedimdiento "Sub auxiliar"
para que nos muestre un msgbox (un mensaje)
'--------------------------------------------------------------------------------------------------
'declaramos la varible rango de tipo range
'la declaramos a nivel de modulo(disponible
'para los procedimientos de este modulo)
Dim rango As Range
Sub principal()
'ahora asiganmos el rango
'asignamos el rango "B10 a B20" a la variable de tipo rango
Set rango = Range("B10:B20")
'ahora hacemos referencia al objeto rango para pintar sus celdas
rango.Interior.ColorIndex = 3
auxiliar 'invocando a la macro auxiliar
End Sub
Sub auxiliar()
MsgBox "Las celdas del rango : " & rango.Address & " han sido pintadas"
End Sub
para que nos muestre un msgbox (un mensaje)
'--------------------------------------------------------------------------------------------------
'declaramos la varible rango de tipo range
'la declaramos a nivel de modulo(disponible
'para los procedimientos de este modulo)
Dim rango As Range
Sub principal()
'ahora asiganmos el rango
'asignamos el rango "B10 a B20" a la variable de tipo rango
Set rango = Range("B10:B20")
'ahora hacemos referencia al objeto rango para pintar sus celdas
rango.Interior.ColorIndex = 3
auxiliar 'invocando a la macro auxiliar
End Sub
Sub auxiliar()
MsgBox "Las celdas del rango : " & rango.Address & " han sido pintadas"
End Sub
Etiquetas:
excel vba llamando macros,
excel vba llamando procedimientos,
invocar procedimientos o macros,
llamando un amacro desde otra macro,
Llamar procedimientos,
macros
viernes, 1 de febrero de 2008
Uso de Variables VBA EXCEL - Macros VBA EXCEL
Variables
----------
Se emplean para "GUARDAR" y "MANIPULAR VALORES ó DATOS "
Se pueden guardar varios tipos de datos
----------------------------------------
-numericos ---> Myvarnum=5000 'guardando el dato numerico "5000" en "Myvarnum"
-cadenas ---->Myvarcadena="Libro39" 'guardando la cadena "Libro39" en Myvarcadena
-objetos -----> set wbk=Activeworkbook ''asig¡nando el libro activo a la variable de tipo objeto "wbk"
-variantes ----->myvar=5000 , myvar="XXX" , set myvar=Activeworkbook
'y en las varables de tipo variant uno podra almacenar un dato de diferentes tipos.
Las varibles se declaran de la sgte manera
-------------------------------------------
Dim var_ejemplo as string
Dim : Indica la declaración d ela variable
var_ejemplo :nombre de la variable
As : cualificativo para separar el "nombre de la varible" del "tipo de dato"
String : El tipo de dato (puede ser string ,integer, object , variant ,etc,etc)
Dim Myvarnum as integer 'tipo..numerico
Dim Myvarcadena as string 'tipo...cadena
Dim wbk as object 'tipo...objeto
Dim myvar as variant 'tipo...variant
*Varibles de objeto
---------------------
empleadas par refrenciar un objeto
*ojo para asignar un objeto a una variable uno debe asignar
de la sgte forma..primero
colocar set..luego nombre de la variable e igualr al objeto.
Set variable=Objeto
Ejemplo
--------
Dim wbk as object
-asignamos el objeto ===> el libro activo(Activeworkbook) a la variable "wbk"
set wbk=Activeworkbook
-y luego podremos por ejemplo decir
Msgbox wbk.name 'y obtendremos el nombre del libro activo
Ambito de las variables
------------------------
Se refiere al área donde se puede acceder.
'-a nivel de procedimiento
'-------------------------
Sub procedim 'las varibles solo seran acesibles dentro del procedimiento
dim paraproc as string
dim paraprox as string
paraproc="Real Madrid"
paraprox="Barcelona"
End sub
'-a nivel de modulo
'----------------------
Dim superclub as string 'accesible a todos los procedimientos del modulo
sub prueba
superclub="Manchester United"
End sub
'-a nivel de proyecto
'---------------------
Option Explicit
'al declara la variable como publica ser accesible desde todo el proyecto
Public superclub As String
Sub prueba1()
superclub = "Inter de Milan"
End Sub
----------
Se emplean para "GUARDAR" y "MANIPULAR VALORES ó DATOS "
Se pueden guardar varios tipos de datos
----------------------------------------
-numericos ---> Myvarnum=5000 'guardando el dato numerico "5000" en "Myvarnum"
-cadenas ---->Myvarcadena="Libro39" 'guardando la cadena "Libro39" en Myvarcadena
-objetos -----> set wbk=Activeworkbook ''asig¡nando el libro activo a la variable de tipo objeto "wbk"
-variantes ----->myvar=5000 , myvar="XXX" , set myvar=Activeworkbook
'y en las varables de tipo variant uno podra almacenar un dato de diferentes tipos.
Las varibles se declaran de la sgte manera
-------------------------------------------
Dim var_ejemplo as string
Dim : Indica la declaración d ela variable
var_ejemplo :nombre de la variable
As : cualificativo para separar el "nombre de la varible" del "tipo de dato"
String : El tipo de dato (puede ser string ,integer, object , variant ,etc,etc)
Dim Myvarnum as integer 'tipo..numerico
Dim Myvarcadena as string 'tipo...cadena
Dim wbk as object 'tipo...objeto
Dim myvar as variant 'tipo...variant
*Varibles de objeto
---------------------
empleadas par refrenciar un objeto
*ojo para asignar un objeto a una variable uno debe asignar
de la sgte forma..primero
colocar set..luego nombre de la variable e igualr al objeto.
Set variable=Objeto
Ejemplo
--------
Dim wbk as object
-asignamos el objeto ===> el libro activo(Activeworkbook) a la variable "wbk"
set wbk=Activeworkbook
-y luego podremos por ejemplo decir
Msgbox wbk.name 'y obtendremos el nombre del libro activo
Ambito de las variables
------------------------
Se refiere al área donde se puede acceder.
'-a nivel de procedimiento
'-------------------------
Sub procedim 'las varibles solo seran acesibles dentro del procedimiento
dim paraproc as string
dim paraprox as string
paraproc="Real Madrid"
paraprox="Barcelona"
End sub
'-a nivel de modulo
'----------------------
Dim superclub as string 'accesible a todos los procedimientos del modulo
sub prueba
superclub="Manchester United"
End sub
'-a nivel de proyecto
'---------------------
Option Explicit
'al declara la variable como publica ser accesible desde todo el proyecto
Public superclub As String
Sub prueba1()
superclub = "Inter de Milan"
End Sub
sábado, 26 de enero de 2008
Ejemplos macros vba Excel
Una pausa en el avance como
para reforzar un poquito lo avanzado.
Sub nombre_padre
'obtener el nombre del padre
'de activesheet
MsgBox ActiveSheet.Parent.FullName
End sub
'recordando el tema del modelo de objetos de Excel
'aqui un claro ejemplo de la jerarquia de objetos de
que les comente:
fijense primero nombramos al objeto "ActiveSheet" y colocamos el punto luego la palabra "Parent"(Padre)
(entiendase entonces que al decir "Activesheet.Parent"
estamos hablando del objeto inmediato superior a a la
hoja activa que seria logicamente"El libro"(ActiveWorkbook)
en este caso entonces veran que es lo mismo
colocar "ActiveSheet.Parent" o "ActiveWorkbook"
y de esa forma tambien podremos referenciar objetos haciendo referencia al objeto padre para el objeto correspondiente del modelo de objetos de Excel.
y finalmente colocamos la, propiedad "FullName"
esto nos daria exactamente el mismo resultado
sub nombre_libro
MsgBox ActiveWorkbook.FullName
end sub
-----------
obtener nombre del libro
************************
' ojo :...pero por ejemplo si el libro activo no se guardo
' ninguna vez todavia nos devolvera "Book1" o "Libro"'
dependiendo del idioma de tu Excel .
'y si tu libro ya lo habias guardado anteriormente
' devolvera ademas del nombre el "path" o ruta de
tu libro activo .
de esta manera : D:\Documents and Settings\Administrador\Escritorio\WorkPlan_jes1.xls
end sub
'Redondeando activecell
'---------------------------
Sub redondear_cells()
s = Round(ActiveCell, 2)
ActiveCell.Value = s
ActiveCell.NumberFormat = "#,##0.00"
End Sub
'Formateando(fuente)
'------------------------
Sub cambiar_formato()
Cells.Select 'seleccionamos todas las celdas
Selection.Font.Name = "Arial Black" 'asignamos la fuente
Selection.Font.Size = 13 'el tamaño de la fuente
'en el ejemplo seleccionamos todas las celdas
'pero puedes comentar la linea -->'Cells.Select'
y seleccionar cualquier rango de celdas'incluso
celdas discontinuas
End Sub
Cambiar entre estilos de referencia
de A1 a RC y viceversa
Application.ReferenceStyle = xlA1Application.ReferenceStyle = xlR1C1
Application.ReferenceStyle = xlA1
'Pegar los formatos
'--------------
'primero copia alguna celda que tenga el formato
'que deseas copiar'luego colocate sobre la celda o celdas
'ahora corre la macro
Sub Paste_formats()
Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
End Sub
'Copiar y Pegar valores
'------------------------
Sub PegarValor()
'de igual manera colocate
'sobre una celda con formula
Selection.Copy
'ahora sobre el rango donde deseas
'pegar solo como valor
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Se me paso mencionar algunas de las combinaciones de teclas para el editor de codigo pero aqui hay unas cuantas que falto mencionar.
Combinaciones de teclas para manejar el editor
-------------------------------------------------------
de codigo para vba (por ahora las más necesarias)
----------------------------------------------------------
para Abrir el editor simplemente presiona ----> Alt + F11
Estando ya sobre ele entorno del editor vba
PRESIONA ---> F2 (Examinador de objetos )
ir a cuadro de dialogo buscar ---> F3
ir a ventana de propiedades ----> F4
Para Ejecutar una macro -------> F5
Correr el codigo linea por linea (las instrucciones)----> F8
para reforzar un poquito lo avanzado.
Sub nombre_padre
'obtener el nombre del padre
'de activesheet
MsgBox ActiveSheet.Parent.FullName
End sub
'recordando el tema del modelo de objetos de Excel
'aqui un claro ejemplo de la jerarquia de objetos de
que les comente:
fijense primero nombramos al objeto "ActiveSheet" y colocamos el punto luego la palabra "Parent"(Padre)
(entiendase entonces que al decir "Activesheet.Parent"
estamos hablando del objeto inmediato superior a a la
hoja activa que seria logicamente"El libro"(ActiveWorkbook)
en este caso entonces veran que es lo mismo
colocar "ActiveSheet.Parent" o "ActiveWorkbook"
y de esa forma tambien podremos referenciar objetos haciendo referencia al objeto padre para el objeto correspondiente del modelo de objetos de Excel.
y finalmente colocamos la, propiedad "FullName"
esto nos daria exactamente el mismo resultado
sub nombre_libro
MsgBox ActiveWorkbook.FullName
end sub
-----------
obtener nombre del libro
************************
' ojo :...pero por ejemplo si el libro activo no se guardo
' ninguna vez todavia nos devolvera "Book1" o "Libro"'
dependiendo del idioma de tu Excel .
'y si tu libro ya lo habias guardado anteriormente
' devolvera ademas del nombre el "path" o ruta de
tu libro activo .
de esta manera : D:\Documents and Settings\Administrador\Escritorio\WorkPlan_jes1.xls
end sub
'Redondeando activecell
'---------------------------
Sub redondear_cells()
s = Round(ActiveCell, 2)
ActiveCell.Value = s
ActiveCell.NumberFormat = "#,##0.00"
End Sub
'Formateando(fuente)
'------------------------
Sub cambiar_formato()
Cells.Select 'seleccionamos todas las celdas
Selection.Font.Name = "Arial Black" 'asignamos la fuente
Selection.Font.Size = 13 'el tamaño de la fuente
'en el ejemplo seleccionamos todas las celdas
'pero puedes comentar la linea -->'Cells.Select'
y seleccionar cualquier rango de celdas'incluso
celdas discontinuas
End Sub
Cambiar entre estilos de referencia
de A1 a RC y viceversa
Application.ReferenceStyle = xlA1Application.ReferenceStyle = xlR1C1
Application.ReferenceStyle = xlA1
'Pegar los formatos
'--------------
'primero copia alguna celda que tenga el formato
'que deseas copiar'luego colocate sobre la celda o celdas
'ahora corre la macro
Sub Paste_formats()
Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
End Sub
'Copiar y Pegar valores
'------------------------
Sub PegarValor()
'de igual manera colocate
'sobre una celda con formula
Selection.Copy
'ahora sobre el rango donde deseas
'pegar solo como valor
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Se me paso mencionar algunas de las combinaciones de teclas para el editor de codigo pero aqui hay unas cuantas que falto mencionar.
Combinaciones de teclas para manejar el editor
-------------------------------------------------------
de codigo para vba (por ahora las más necesarias)
----------------------------------------------------------
para Abrir el editor simplemente presiona ----> Alt + F11
Estando ya sobre ele entorno del editor vba
PRESIONA ---> F2 (Examinador de objetos )
ir a cuadro de dialogo buscar ---> F3
ir a ventana de propiedades ----> F4
Para Ejecutar una macro -------> F5
Correr el codigo linea por linea (las instrucciones)----> F8
Etiquetas:
Ejemplo Excel macro vba objeto application,
ejemplos excel macros vba excel,
ejemplos macros vba,
excel vba macro ejemplo objeto range,
vba codigo ejemplo
viernes, 25 de enero de 2008
Respuesta(Insertar en un datatable un rango de casillas del excel)
Hoy he recibido un correo con la sgte consulta:
- Programa .net que lea un excel y actualice la BD
- ¿Como insertar en un datatable un rango de casillas de Excel?
*Doctores , no es la intención si es que este ejemplo sale un poco del orden del avance de temas del blog
Pero creo que es importante igualmente
compartir la mayor cantidad de conocimientos posibles.
No lo he hecho antes, pero creo que si procedes de esta forma, funcionará:
1.-Convierte tu rango de celdas a un archivo xml físico.
2.-Luego, el datatable acepta como origen de datos un archivo XML, entonces cargas el datatable con el xml que creaste...algo así:DataSet ds = new DataSet();ds.ReadXml("myXmlFile.xml");return ds.Tables(0);
- Programa .net que lea un excel y actualice la BD
- ¿Como insertar en un datatable un rango de casillas de Excel?
*Doctores , no es la intención si es que este ejemplo sale un poco del orden del avance de temas del blog
Pero creo que es importante igualmente
compartir la mayor cantidad de conocimientos posibles.
No lo he hecho antes, pero creo que si procedes de esta forma, funcionará:
1.-Convierte tu rango de celdas a un archivo xml físico.
2.-Luego, el datatable acepta como origen de datos un archivo XML, entonces cargas el datatable con el xml que creaste...algo así:DataSet ds = new DataSet();ds.ReadXml("myXmlFile.xml");return ds.Tables(0);
martes, 22 de enero de 2008
Procedimientos y Funciones 0.1
Ahora ya seguarmente con una mejor referencia
de como trabajar en Excel con el modelo de objetos.
Volviendo a la definicion inicial del Vba(Visual Basic para Aplicaciones)
"Es el lenguaje con el que podras manipular los objetos de Excel y crear tus propias aplicaciones(claro mas adelante) por ahora macros utiles."
*Por eso era muy importante primero verificar el modelo de objetos de Excel.
Los procedimientos
---------------------
Conjunto de instrucciones que realiza una accion.
*esta encerrado pot las palabras reservadas
Sub y End Sub
ejemplo
----------
Sub crear_libro
'instruccion1
'instruccion2
'instruccion3
End Sub
Las funciones
---------------
A diferencia de un procedimiento
una función devolvera valores
*esta encerrado po las palabras reservadas
"Function" "End Function"
ejemplo
--------
Function MostrarTriple(numero)
'devolvera el triple de un número
MostrarTriple=numero*3
Msgbox MostrarTriple
End Function
ejemplo
--------
'el primer pasos sera crear un procedimiento(mostrar_triple)
'que llame a la [funcion "convertirTriple"]
'luego le pasamos el numero que deseamos que convierta
'debes colocarte ahora sobre el procedimiento mostrar_triple'
y presionar f8 hasta que obtengas recuperar el valor de la funcion
'pega el procedimiento y la funcion en un modulo
Sub mostrar_triple()
'aqui le pasamso el numero 55 a la funcion
'y simplemente mostramos en un mensaje
' el valor que nos devuelve la funcion
MsgBox convertirTriple(55)
End Sub
Function convertirTriple(numero)
'devolvera el triple de un número
'en este caso el numero="55"'y
'luego lo multiplica por 3
convertirTriple = numero * 3
End Function
de como trabajar en Excel con el modelo de objetos.
Volviendo a la definicion inicial del Vba(Visual Basic para Aplicaciones)
"Es el lenguaje con el que podras manipular los objetos de Excel y crear tus propias aplicaciones(claro mas adelante) por ahora macros utiles."
*Por eso era muy importante primero verificar el modelo de objetos de Excel.
Los procedimientos
---------------------
Conjunto de instrucciones que realiza una accion.
*esta encerrado pot las palabras reservadas
Sub y End Sub
ejemplo
----------
Sub crear_libro
'instruccion1
'instruccion2
'instruccion3
End Sub
Las funciones
---------------
A diferencia de un procedimiento
una función devolvera valores
*esta encerrado po las palabras reservadas
"Function" "End Function"
ejemplo
--------
Function MostrarTriple(numero)
'devolvera el triple de un número
MostrarTriple=numero*3
Msgbox MostrarTriple
End Function
ejemplo
--------
'el primer pasos sera crear un procedimiento(mostrar_triple)
'que llame a la [funcion "convertirTriple"]
'luego le pasamos el numero que deseamos que convierta
'debes colocarte ahora sobre el procedimiento mostrar_triple'
y presionar f8 hasta que obtengas recuperar el valor de la funcion
'pega el procedimiento y la funcion en un modulo
Sub mostrar_triple()
'aqui le pasamso el numero 55 a la funcion
'y simplemente mostramos en un mensaje
' el valor que nos devuelve la funcion
MsgBox convertirTriple(55)
End Sub
Function convertirTriple(numero)
'devolvera el triple de un número
'en este caso el numero="55"'y
'luego lo multiplica por 3
convertirTriple = numero * 3
End Function
Etiquetas:
ejemplos prodcedimientos y funciones excel vba,
funciones excel vba.macros excel vba,
procedimientos excel vba,
Procedimientos y Funciones Excel vba Macros
domingo, 20 de enero de 2008
El Modelo de objetos de Excel
Antes de continuar con los temas debemos tenera algunas consideraciones para continuar trabajando con objetos en el Excel (Excel vba)
Importante no olvidar lo sgte :
- Los objetos cuentan con "propiedades" y "métodos".
-Una propiedad es un atributo del objeto que define una característica del mismo
Un Ejemplo, la propiedad "Row" del objeto "ActiveCell" nos indica en qué fila de la hoja está la celda activa.
Macro sobre la propiedad Row de la celda
Sub celdax()
MsgBox ActiveCell.Row 'devuelve la fila de la celda activa
MsgBox ActiveCell.Column 'devuelve la columna de la celda activa
End Sub
Para poder acceder a una propiedad de un objeto se utiliza el nombre del objeto, seguido de un punto y el nombre de la propiedad.
Como se vio justamente en ejemplo de la propiedad Row para la celda
ActiveCell.Row
donde el objeto es la celda activa : ActiveCell
la propiedad es : Row
MsgBox ActiveCell.Row
Los "métodos" son las acciones que podemos llevar a cabo sobre el objeto.
Para llamar a un método se utiliza el nombre del objeto, un punto y el nombre del método
Ejemplo, el método "ActiveCell.Clear" borra el contenido de la celda activa
como te habras dado cuenta en la mayoria ejemplos hemos empleado instrucciones
muy similares a esta.
Hemos colocado Msgbox para mostrar una característica de un objeto
y de esa manera obtener el valor de una propiedad determinada.
MsgBox ActiveCell.Row
Va ser importante entonces notar la diferencia entre propiedades y metodos de l0s objetos en el Excel
Hasta aqui las propiedades nos permiten:(obtener características de los objetos )
y los metodos (llevar acciones sobre un objeto tal y como se vio en el ejemplo la accion ejecutada fue borrar el contenido de la celda "ActiveCell.Clear").
*La totalidad de acciones que puede realizar un usuario sobre un objeto(Metodos del objeto)
*Valores que se podran obtener o asignar(propiedades del objeto)
*Tampoco debes olvidar que para trabajar sobre un objeto en Excel no es necesario seleccionarlo
'En esta macro de ejmplo podras comprobarlo
Sub celda_conseleccion()
'seleccionamos el rango A1
Range("A1").Select
'asignamos a la seleccion el color'con el index=5
ActiveCell.Interior.ColorIndex = 5
'pero las lineas iniciales no seran necesarias
'bastara con trabajar directamente sobre el'rango "A1"
Range("A1").Interior.ColorIndex = 8
End Sub
Importante no olvidar lo sgte :
- Los objetos cuentan con "propiedades" y "métodos".
-Una propiedad es un atributo del objeto que define una característica del mismo
Un Ejemplo, la propiedad "Row" del objeto "ActiveCell" nos indica en qué fila de la hoja está la celda activa.
Macro sobre la propiedad Row de la celda
Sub celdax()
MsgBox ActiveCell.Row 'devuelve la fila de la celda activa
MsgBox ActiveCell.Column 'devuelve la columna de la celda activa
End Sub
Para poder acceder a una propiedad de un objeto se utiliza el nombre del objeto, seguido de un punto y el nombre de la propiedad.
Como se vio justamente en ejemplo de la propiedad Row para la celda
ActiveCell.Row
donde el objeto es la celda activa : ActiveCell
la propiedad es : Row
MsgBox ActiveCell.Row
Los "métodos" son las acciones que podemos llevar a cabo sobre el objeto.
Para llamar a un método se utiliza el nombre del objeto, un punto y el nombre del método
Ejemplo, el método "ActiveCell.Clear" borra el contenido de la celda activa
como te habras dado cuenta en la mayoria ejemplos hemos empleado instrucciones
muy similares a esta.
Hemos colocado Msgbox para mostrar una característica de un objeto
y de esa manera obtener el valor de una propiedad determinada.
MsgBox ActiveCell.Row
Va ser importante entonces notar la diferencia entre propiedades y metodos de l0s objetos en el Excel
Hasta aqui las propiedades nos permiten:(obtener características de los objetos )
y los metodos (llevar acciones sobre un objeto tal y como se vio en el ejemplo la accion ejecutada fue borrar el contenido de la celda "ActiveCell.Clear").
*La totalidad de acciones que puede realizar un usuario sobre un objeto(Metodos del objeto)
*Valores que se podran obtener o asignar(propiedades del objeto)
*Tampoco debes olvidar que para trabajar sobre un objeto en Excel no es necesario seleccionarlo
'En esta macro de ejmplo podras comprobarlo
Sub celda_conseleccion()
'seleccionamos el rango A1
Range("A1").Select
'asignamos a la seleccion el color'con el index=5
ActiveCell.Interior.ColorIndex = 5
'pero las lineas iniciales no seran necesarias
'bastara con trabajar directamente sobre el'rango "A1"
Range("A1").Interior.ColorIndex = 8
End Sub
Etiquetas:
codigo ejemplo excel macro,
excel macro ejemplo,
macro de ejemplo Excel,
modelo de objetos ejemplo,
objetos de Excel,
trabajado con objetos en Excel vba code,
Vba macro ejemplo
miércoles, 16 de enero de 2008
Metodos del Objeto Range
A) Activate:
--------
Activar el Rango seleccionado.
B)Clear
-----
Borrar los valores y formatos del Rango.
C)ClearContents
--------------
Solo borra los valores del rango manteniendo el formato intacto.
D)Delete
-------
Eliminar el Rango indicado.
E)Calculate
---------
Recalcular las formulas en un rango indicado.
'Ahora una macro de ejmplo de los metodos del objeto range
'Excel VBA Macro de ejemplo aplicacion de metodos del objeto range
Sub ejemplo_range_met()
Range("A1").Activate 'Activa el Rango
Range("A1").Delete 'eliminar el rango
Range("A1:A100").Calculate 'recalculo en el range
Range("A2").Clear 'borra contenido y formatos
Range("A2").ClearContents 'solo contenidos
End Sub
--------
Activar el Rango seleccionado.
B)Clear
-----
Borrar los valores y formatos del Rango.
C)ClearContents
--------------
Solo borra los valores del rango manteniendo el formato intacto.
D)Delete
-------
Eliminar el Rango indicado.
E)Calculate
---------
Recalcular las formulas en un rango indicado.
'Ahora una macro de ejmplo de los metodos del objeto range
'Excel VBA Macro de ejemplo aplicacion de metodos del objeto range
Sub ejemplo_range_met()
Range("A1").Activate 'Activa el Rango
Range("A1").Delete 'eliminar el rango
Range("A1:A100").Calculate 'recalculo en el range
Range("A2").Clear 'borra contenido y formatos
Range("A2").ClearContents 'solo contenidos
End Sub
Objeto Range del Excel- Excel VBA MAcros Ejemplo propiedades Objeto Range
Un concepto adeacuado y util del obejor range del Excel por ahora seria pensar en un objeto Range como una celda, una fila, una columna o una selección de celdas
*Un objeto range estara contenido dentro de un objeto woorsheet
Propiedades del Objeto Range
-----------------------------
a)Address
---------
Indica la dirección del rango seleccionado.
ejemplo
--------
MsgBox ActiveCell.Address 'devolvera la direccion dela celda activa
b)Count
------:
Cuenta el número de objetos de un conjunto.
ejemplo
--------
MsgBox Selection.Cells.Count 'devolvera la cantidad de celdas seleccionadas
c)Name
------:
Nos servira pra asignar o recuperar el nombre de un rango
Selection.Name = "prueba_vba"
d)Value
------
Devuelve el valor de un rango
MsgBox Range("A1").Value 'el valor del rango de la celda A1
e)formula
--------
MsgBox Range("A1").Formula
*Un objeto range estara contenido dentro de un objeto woorsheet
Propiedades del Objeto Range
-----------------------------
a)Address
---------
Indica la dirección del rango seleccionado.
ejemplo
--------
MsgBox ActiveCell.Address 'devolvera la direccion dela celda activa
b)Count
------:
Cuenta el número de objetos de un conjunto.
ejemplo
--------
MsgBox Selection.Cells.Count 'devolvera la cantidad de celdas seleccionadas
c)Name
------:
Nos servira pra asignar o recuperar el nombre de un rango
Selection.Name = "prueba_vba"
d)Value
------
Devuelve el valor de un rango
MsgBox Range("A1").Value 'el valor del rango de la celda A1
e)formula
--------
MsgBox Range("A1").Formula
sábado, 12 de enero de 2008
Objeto Worksheet de Excel
El objeto Worksheets representa a las Hojas de un Libro de Excel
*La colección de WorkSheets es formada por las hojas de un libro.
* Cada miembro de la colección Sheets es un objeto Worksheet(hoja)
Metodos del objeto Worksheets
--------------------------------
Delete
-------
Permite Eliminar una Hoja
Por ejemplo Eliminar la hoja Abril
Sub delete_hoja()
Application.DisplayAlerts = False 'asignamos a falso para evitar
' las alertas de Excel al eliminar hojas
Sheets("Abril").Delete 'eliminando hoja="Abril"
Application.DisplayAlerts = True 'devolvemos el valor por defecto "verdadero"
End Sub
Add
------
Crear un nueva hoja
Sub new_sht()
Sheets.Add 'agregar una hoja
Sheets.Add after:=Sheets(2) 'agregar un hoja al libro y colocarla despues de la hoja2
End Sub
Move
------
Permite Mover una Hoja
Sub new_sht()
'movemos la hoja enero despues de report
Worksheets("enero").Move After:=Sheets("report")
End Sub
Select
------
Permite Seleccionar una Hoja
sub selex
Sheets(2).Select 'seleccionamos la hoja 2 del libro
end sub
Copy
------
Permite Copiar una Hoja
Sub new_sht_copy()
'creamos auna copia de la hoja enero
'y la colcamos despues de la segunda hoja del libro
Worksheets("enero").Copy After:=Sheets(2)
End Sub
'ahora un ejemplo de 2 propiedades del objeto worksheet
Sub ejemplo_worksheet_prop()
'macro de ejemplo 2 propiedades
'muy comunes del objeto worksheet
'te devuelve el nombre de la hoja
'por ahora innecesario aparentemente
'pera notaras la utilidad de esta
'propiedad a la hora de hacer compraciones
'o busquedas entre las hojas del libro
MsgBox ActiveSheet.Name
'esto te devolvera el indice de
'la hoja activa(Índice de la Hoja)
'es decir si es la hoja 1 o 2 o 3,etc del libro
MsgBox ActiveSheet.Index
End Sub
*La colección de WorkSheets es formada por las hojas de un libro.
* Cada miembro de la colección Sheets es un objeto Worksheet(hoja)
Metodos del objeto Worksheets
--------------------------------
Delete
-------
Permite Eliminar una Hoja
Por ejemplo Eliminar la hoja Abril
Sub delete_hoja()
Application.DisplayAlerts = False 'asignamos a falso para evitar
' las alertas de Excel al eliminar hojas
Sheets("Abril").Delete 'eliminando hoja="Abril"
Application.DisplayAlerts = True 'devolvemos el valor por defecto "verdadero"
End Sub
Add
------
Crear un nueva hoja
Sub new_sht()
Sheets.Add 'agregar una hoja
Sheets.Add after:=Sheets(2) 'agregar un hoja al libro y colocarla despues de la hoja2
End Sub
Move
------
Permite Mover una Hoja
Sub new_sht()
'movemos la hoja enero despues de report
Worksheets("enero").Move After:=Sheets("report")
End Sub
Select
------
Permite Seleccionar una Hoja
sub selex
Sheets(2).Select 'seleccionamos la hoja 2 del libro
end sub
Copy
------
Permite Copiar una Hoja
Sub new_sht_copy()
'creamos auna copia de la hoja enero
'y la colcamos despues de la segunda hoja del libro
Worksheets("enero").Copy After:=Sheets(2)
End Sub
'ahora un ejemplo de 2 propiedades del objeto worksheet
Sub ejemplo_worksheet_prop()
'macro de ejemplo 2 propiedades
'muy comunes del objeto worksheet
'te devuelve el nombre de la hoja
'por ahora innecesario aparentemente
'pera notaras la utilidad de esta
'propiedad a la hora de hacer compraciones
'o busquedas entre las hojas del libro
MsgBox ActiveSheet.Name
'esto te devolvera el indice de
'la hoja activa(Índice de la Hoja)
'es decir si es la hoja 1 o 2 o 3,etc del libro
MsgBox ActiveSheet.Index
End Sub
Etiquetas:
Excel Vba Code Objeto Worksheet de Excel,
Macros Ejenmplos Objeto Worksheet de Excel,
Metodos Objeto Worksheet de Excel,
Objeto Worksheet de Excel,
Objeto Worksheet de Excel Ejemplo
jueves, 10 de enero de 2008
Métodos del objeto Workbook de Excel
a) Activate : Activa un libro
b) Close :Cierra el libro con la posibilidad de indicar si deben guardarse los cambios.
c) Protect Unprotect :Permite proteger un libro, de forma que los usuarios no puedan agregar ni eliminar hojas de cálculo, y volverlo a desproteger.
d) Save :Guarda el libro. Si el libro no se ha guardado antes, Excel lo guarda en la carpeta actual
e) SaveAs :Permite guardar el libro especificado, indicando a título opcional un nombre, un formato de archivo, una contraseña
f) SaveCopyAs :Guarda una copia del libro en un archivo, pero no modifica el libro abierto en memoria. Este método es útil cuando se desea crear una copia de seguridad sin modificar la ubicación del libro.
Ejemplos de macros del Uso de Metodos del objeto Workbook del Excel
'el codigo vba excel en 2 ejemplos simples
Sub activate_wbk_excel() 'activar el libro
'con esta linea podras evitar el mensaje de error del excel
'en caso no exista ese libro de Excel
On Error Resume Next
Workbooks("Excel VBA Finance").Activate
End Sub
'nuevamente debes correr la macro linea
'por linea para que te fijes los cambios 'en el excel
'ahora necesitas crear 5 libros nuevos 'cada libro de Excel forma parte de la colección de libros 'entonces tamnbien cada libro cuenta con un index 'y tambien puedes referenciar un workbook con un número 'en este caso el 1 reprenta a el libro 1 de la coleccion de libros de excel 'en cualquier caso tambien puedes hacer referecia por el nombre del libro
Sub Close_wbk_excel()
Workbooks(1).Close True 'cerrar el libro guardando cambios
Workbooks("5").Close 'cerrar el libro sin guardar cambios
Workbooks(2).Save 'Guarda el libro
Workbooks(3).SaveAs "C:\Documents and Settings\JesusMartin\Escritorio\Excel ejemplo.xls"
'guarda una copia
Workbooks(4).SaveCopyAs "C:\Documents and Settings\JesusMartin\Escritorio\Copia de ejemplo Excel.xls"
End Sub
b) Close :Cierra el libro con la posibilidad de indicar si deben guardarse los cambios.
c) Protect Unprotect :Permite proteger un libro, de forma que los usuarios no puedan agregar ni eliminar hojas de cálculo, y volverlo a desproteger.
d) Save :Guarda el libro. Si el libro no se ha guardado antes, Excel lo guarda en la carpeta actual
e) SaveAs :Permite guardar el libro especificado, indicando a título opcional un nombre, un formato de archivo, una contraseña
f) SaveCopyAs :Guarda una copia del libro en un archivo, pero no modifica el libro abierto en memoria. Este método es útil cuando se desea crear una copia de seguridad sin modificar la ubicación del libro.
Ejemplos de macros del Uso de Metodos del objeto Workbook del Excel
'el codigo vba excel en 2 ejemplos simples
Sub activate_wbk_excel() 'activar el libro
'con esta linea podras evitar el mensaje de error del excel
'en caso no exista ese libro de Excel
On Error Resume Next
Workbooks("Excel VBA Finance").Activate
End Sub
'nuevamente debes correr la macro linea
'por linea para que te fijes los cambios 'en el excel
'ahora necesitas crear 5 libros nuevos 'cada libro de Excel forma parte de la colección de libros 'entonces tamnbien cada libro cuenta con un index 'y tambien puedes referenciar un workbook con un número 'en este caso el 1 reprenta a el libro 1 de la coleccion de libros de excel 'en cualquier caso tambien puedes hacer referecia por el nombre del libro
Sub Close_wbk_excel()
Workbooks(1).Close True 'cerrar el libro guardando cambios
Workbooks("5").Close 'cerrar el libro sin guardar cambios
Workbooks(2).Save 'Guarda el libro
Workbooks(3).SaveAs "C:\Documents and Settings\JesusMartin\Escritorio\Excel ejemplo.xls"
'guarda una copia
Workbooks(4).SaveCopyAs "C:\Documents and Settings\JesusMartin\Escritorio\Copia de ejemplo Excel.xls"
End Sub
Etiquetas:
application,
code,
ejemplo,
excel,
excel macro de ejemplo del uso de las propiedades del objeto workbook,
macros de ejemplo objeto workbook,
macros vba,
metodos y propiedades del objeto workbook,
vba
miércoles, 9 de enero de 2008
Propiedades del objeto Workbook de Excel
Propiedades del objeto Workbook de Excel
-------------------------------------------
a)Name:
----
Devuelve el nombre del libro.
b) FullName:
--------
Devuelve la ruta de acceso completa, incluido el nombre del libro.
c) Path
----:
Devuelve la ruta de acceso.
d) Author
------:
Permite establecer el nombre del autor creador del libro.
Macro de ejemplo del uso de las propiedades del Objeto workbook
------------------------------------------------------------------
Sub Propiedades_libro()
'ejemplos del uso de las propiedades'del objeto workbook Excel(Codigo Vba Excel)
'ActiveWorkbook.Author = "Tula"
MsgBox ActiveWorkbook.Name
'si el libro no ha sido guardado todavia'al menos una vez entonces Path no devolvera nada
MsgBox ActiveWorkbook.Path
MsgBox ActiveWorkbook.Name
MsgBox ActiveWorkbook.FullName
End Sub
-------------------------------------------
a)Name:
----
Devuelve el nombre del libro.
b) FullName:
--------
Devuelve la ruta de acceso completa, incluido el nombre del libro.
c) Path
----:
Devuelve la ruta de acceso.
d) Author
------:
Permite establecer el nombre del autor creador del libro.
Macro de ejemplo del uso de las propiedades del Objeto workbook
------------------------------------------------------------------
Sub Propiedades_libro()
'ejemplos del uso de las propiedades'del objeto workbook Excel(Codigo Vba Excel)
'ActiveWorkbook.Author = "Tula"
MsgBox ActiveWorkbook.Name
'si el libro no ha sido guardado todavia'al menos una vez entonces Path no devolvera nada
MsgBox ActiveWorkbook.Path
MsgBox ActiveWorkbook.Name
MsgBox ActiveWorkbook.FullName
End Sub
Etiquetas:
excel macro de ejemplo del uso de las propiedades del objeto workbook,
objeto aplication excel vba,
objeto workbook,
Propiedades de objetos de Excel,
vba codigo excel
Objeto application en Excel -Excel macros
'Objeto application Excel (Excel macros - vba) II
'Otras propiedades del objeto application Excel
Propiedades del Objeto Application de Excel
---------------------------------------------
'devuelve la ruta de instalacion de Microsoft excel
Msgbox application.path
'maximizar la ventana
application.Windowstate=xlmaximized
'Cambiar el titulo de la ventana principal del Excel
Application.caption="Cuentas de enero"
Metodos del objeto application
------------------------------
a)QUIT
------
'Este metodo es empleado para Salir del Excel'cuidado con perder algun trabajo'si hay libros abiertos Excel preguntara si desea guardar los cambios'pero cuidado si tienes displayalerts=false .Excel no te preguntara si deseas salir'y saldra de la application sin guardar los libros.
Application.Quit
b)RUN
------
Empleado para ejecutar una macro o una application Vba.
'aqui simplemente colocamos el nombre de la macro que buscamos'se ejecute en este caso "macro1"
Application.Run macro:="macro1"
Recuerda: El objeto Application esta en el nivel más alto de la jerarquia de los objetos del Excel y representa al mismo Microsoft Excel.
'Otras propiedades del objeto application Excel
Propiedades del Objeto Application de Excel
---------------------------------------------
'devuelve la ruta de instalacion de Microsoft excel
Msgbox application.path
'maximizar la ventana
application.Windowstate=xlmaximized
'Cambiar el titulo de la ventana principal del Excel
Application.caption="Cuentas de enero"
Metodos del objeto application
------------------------------
a)QUIT
------
'Este metodo es empleado para Salir del Excel'cuidado con perder algun trabajo'si hay libros abiertos Excel preguntara si desea guardar los cambios'pero cuidado si tienes displayalerts=false .Excel no te preguntara si deseas salir'y saldra de la application sin guardar los libros.
Application.Quit
b)RUN
------
Empleado para ejecutar una macro o una application Vba.
'aqui simplemente colocamos el nombre de la macro que buscamos'se ejecute en este caso "macro1"
Application.Run macro:="macro1"
Recuerda: El objeto Application esta en el nivel más alto de la jerarquia de los objetos del Excel y representa al mismo Microsoft Excel.
lunes, 7 de enero de 2008
Macro :Ejemplo de propiedades del objeto Application Excel
'Macro de ejemplo codigo vba Excel :'Objeto Application Excel
'para complementar las propiedades del objeto application de Excel
esta seria otro pequeño ejemplo del uso del objeto application En excel
Sub macro_excel_application()
'Nombre del usuario
MsgBox Application.UserName
'Nombre de la empresa
MsgBox Application.OrganizationName
'el Sistema operativo
MsgBox Application.OperatingSystem
'Carácter separador de miles
MsgBox Application.DecimalSeparator
'la Impresora por defecto
MsgBox Application.ActivePrinter
'la Ruta a carpeta Add-ins
MsgBox Application.UserLibraryPath
End Sub
'para complementar las propiedades del objeto application de Excel
esta seria otro pequeño ejemplo del uso del objeto application En excel
Sub macro_excel_application()
'Nombre del usuario
MsgBox Application.UserName
'Nombre de la empresa
MsgBox Application.OrganizationName
'el Sistema operativo
MsgBox Application.OperatingSystem
'Carácter separador de miles
MsgBox Application.DecimalSeparator
'la Impresora por defecto
MsgBox Application.ActivePrinter
'la Ruta a carpeta Add-ins
MsgBox Application.UserLibraryPath
End Sub
Etiquetas:
application,
ejemplo,
Ejemplo Excel macro vba objeto application,
excel,
Microsoft Excel Objeto application,
objeto,
propiedades objeto application,
uso de propiedades del objeto application,
vba
Objeto application en Excel -Excel macros
El objeto Application proporciona un gran conjunto de propiedades que controlan el estado general de Microsoft Excel.
Propiedades del objeto Application
-------------------------------------------
Aqui una pequeña lista de algunas de las propiedades del objeto application tal vez las más adecuadas de revisar por ahora teniendo en cuenta que la idea es ir familiarizandose de a pocos)
A) ScreenUpdating(Boolean) Si es True, Excel actualiza su pantalla después de cada llamada a un método. Puede desactivar la presentación mientras se ejecuta el código. Asegúrese de establecer de nuevo esta propiedad en True.
El objeto Application proporciona también un grupo de propiedades que controlan la presentación en Excel. Puede modificar cualquiera de estas propiedades para cambiar lo que el usuario ve en la pantalla.
A continuación se incluyen algunas de las opciones de presentación comunes:
B) DisplayAlerts(Boolean) Si es True (el valor predeterminado), Excel muestra mensajes de advertencia mientras se ejecuta el código, cuando sea necesario. Establezca esta propiedad en False para omitir las advertencias y seleccionar el valor predeterminado.
'Un ejemplo de las alertas que muestra el excel seria el mensaje de confirmación cuando se desea eliminar una hoja,.
C) DisplayFormulaBar(Boolean)Si es True (el valor predeterminado), Excel muestra la barra de fórmulas estándar para la modificación de celdas; establézcala en False para ocultar la barra.
D) DisplayFullScreen(Boolean) Si es True, Excel se ejecuta en el modo de pantalla completa (con un efecto diferente al que se obtiene maximizando la ventana de Excel); el valor predeterminado es False.
Al igual que ocurre con la propiedad ScreenUpdating, es importante restablecer la propiedad DisplayAlerts. Con DisplayAlerts como False, Excel no pregunta si se desea guardar los libros antes de cerrarlos, por lo que se pueden perder los datos.
Ahora una pequeña macro que muestra como funciona en el codigo Vba - Excel lo comentado.
macro( ejemplo de objeto application excel)
'Objeto application no te olvides de ejecutar linea por linea para que observes los cambios en Excel
Sub excel_macro_applicati() 'vba_application
Application.DisplayAlerts = False 'aqui Excel no pediria confiramción para eliminar una hoja
Application.DisplayAlerts = True ' Excel solicita confirmación de determinadas acciones)
'esta propiedad debe estar asignada como True por defecto
Application.DisplayFormulaBar = False 'Ocultar la barra de formulas de
Application.DisplayFormulaBar = True 'Mostrar barra de formulas de Excel
Application.DisplayFullScreen = True 'Excel se ejecuta en el modo de pantalla completa
Application.DisplayFullScreen = False 'Devuelve el valor x defecto
End Sub
Propiedades del objeto Application
-------------------------------------------
Aqui una pequeña lista de algunas de las propiedades del objeto application tal vez las más adecuadas de revisar por ahora teniendo en cuenta que la idea es ir familiarizandose de a pocos)
A) ScreenUpdating(Boolean) Si es True, Excel actualiza su pantalla después de cada llamada a un método. Puede desactivar la presentación mientras se ejecuta el código. Asegúrese de establecer de nuevo esta propiedad en True.
El objeto Application proporciona también un grupo de propiedades que controlan la presentación en Excel. Puede modificar cualquiera de estas propiedades para cambiar lo que el usuario ve en la pantalla.
A continuación se incluyen algunas de las opciones de presentación comunes:
B) DisplayAlerts(Boolean) Si es True (el valor predeterminado), Excel muestra mensajes de advertencia mientras se ejecuta el código, cuando sea necesario. Establezca esta propiedad en False para omitir las advertencias y seleccionar el valor predeterminado.
'Un ejemplo de las alertas que muestra el excel seria el mensaje de confirmación cuando se desea eliminar una hoja,.
C) DisplayFormulaBar(Boolean)Si es True (el valor predeterminado), Excel muestra la barra de fórmulas estándar para la modificación de celdas; establézcala en False para ocultar la barra.
D) DisplayFullScreen(Boolean) Si es True, Excel se ejecuta en el modo de pantalla completa (con un efecto diferente al que se obtiene maximizando la ventana de Excel); el valor predeterminado es False.
Al igual que ocurre con la propiedad ScreenUpdating, es importante restablecer la propiedad DisplayAlerts. Con DisplayAlerts como False, Excel no pregunta si se desea guardar los libros antes de cerrarlos, por lo que se pueden perder los datos.
Ahora una pequeña macro que muestra como funciona en el codigo Vba - Excel lo comentado.
macro( ejemplo de objeto application excel)
'Objeto application no te olvides de ejecutar linea por linea para que observes los cambios en Excel
Sub excel_macro_applicati() 'vba_application
Application.DisplayAlerts = False 'aqui Excel no pediria confiramción para eliminar una hoja
Application.DisplayAlerts = True ' Excel solicita confirmación de determinadas acciones)
'esta propiedad debe estar asignada como True por defecto
Application.DisplayFormulaBar = False 'Ocultar la barra de formulas de
Application.DisplayFormulaBar = True 'Mostrar barra de formulas de Excel
Application.DisplayFullScreen = True 'Excel se ejecuta en el modo de pantalla completa
Application.DisplayFullScreen = False 'Devuelve el valor x defecto
End Sub
sábado, 5 de enero de 2008
Modelo de Objetos Excel (Macros - Excel Vba )
Ejemplos de objetos seria un libro de trabajo, una hoja de cálculo,un rango de una hoja de cálculo. Encntramos más objetos a nuestra disposición y manipularan mediante el uso de código VBA.·Las clases de objetos están ordenados de manera jerárquica. Los objetos actuan como contenedores de otros objetos. Por ejemplo, Excel es un objeto llamado Applcation y contiene otros como WorkBook y CommandBar. El objeto WoorkBook puede contener otros objetos como WorkSheet y Chart. Un objetoWoorkSheet puede contener objetos como Range . Nos referimos al orden de estos objetos como modelo de objetos de Excel.
Por ejemplo, la colección de WorkSheets está compuesta por todas las hojas de cálculo de un libro . La colección CommandBars está compuesta por los objetos CommandBar. Las colecciones son objetos en símismas.Cuando nos referimos a un objeto contenido o miembro, estamosespecificando su posición en la jerarquía del objeto, usando unpunto como seprador entre el contenedor y el miembro.
Application.WorkBooks("Cuentas.xls")Esto se refiere al libro "Cuentas.xls" en la colección de WorkBooks.
Por ejemplo, la colección de WorkSheets está compuesta por todas las hojas de cálculo de un libro . La colección CommandBars está compuesta por los objetos CommandBar. Las colecciones son objetos en símismas.Cuando nos referimos a un objeto contenido o miembro, estamosespecificando su posición en la jerarquía del objeto, usando unpunto como seprador entre el contenedor y el miembro.
Application.WorkBooks("Cuentas.xls")Esto se refiere al libro "Cuentas.xls" en la colección de WorkBooks.
Modelo de Objetos del Excel
Una vez que el usuario aprende a leer e interpretar una libreria de objetos del Excel se puede apuntar a nuevas posibilidades y proyectarse de seguro hacia como ponerlas en practica .La mejor manera de aprender como se comunica vba con excel es grabar algunas macros sencilas.
Seria importante tambien hacer lo sgte :
Entendiendo que estas sobre un libro de Excel
1) Presiona "ALT" + "F11"
- ya estas sobre el entorno Vba del Excel
2) Presiona "F2"
Ahora puedes ver el examinador de objetos
-para el ejemplo de la imagen he colocado -->"application" en la cajita y como veras
nos muestra toda una jeraquia de objetos apartir del objeto "applicaction"
igualmente puedes colocar tambien "workbook" o cualquier elemento del
modelo de objetos y asi de esa manera podras tambine darte cuenta de la estrctura de objetos para el Excel.
Una vez que el usuario aprende a leer e interpretar una libreria de objetos del Excel se puede apuntar a nuevas posibilidades y proyectarse de seguro hacia como ponerlas en practica .La mejor manera de aprender como se comunica vba con excel es grabar algunas macros sencilas.
Seria importante tambien hacer lo sgte :
Entendiendo que estas sobre un libro de Excel
1) Presiona "ALT" + "F11"
- ya estas sobre el entorno Vba del Excel
2) Presiona "F2"
Ahora puedes ver el examinador de objetos
-para el ejemplo de la imagen he colocado -->"application" en la cajita y como veras
nos muestra toda una jeraquia de objetos apartir del objeto "applicaction"
igualmente puedes colocar tambien "workbook" o cualquier elemento del
modelo de objetos y asi de esa manera podras tambine darte cuenta de la estrctura de objetos para el Excel.
Etiquetas:
Celda,
Crear macros,
el modelo de objetos del Excel,
Excel modelo de objetos,
macros,
Objetos del Excel,
Range,
Sheet,
Workbook
viernes, 4 de enero de 2008
Microsoft Excel Macros - Codigo Vba Excel
Como ya hemos creado algunas macros para Excel muy simples y ahora pueden crear las macros basicas...creo que podemos seguir avanzando..
Creo que ahora podemos darle otra orientación al tema de pronto seria importante ... tratar el tema de una forma
tal vez más amplia es decir ..explicar muy a groso modo el modelo de objetos de Microsoft Excel .....
Modelo de objetos de Excel (los primeros objetos de Excel que necesitamos conocer)
------------------------------------------------------------------------------------------
Como los datos de un documento de Excel están muy estructurados, el modelo de objetos es jerárquico y sencillo. Excel proporciona cientos de objetos con los que quizá desee interactuar, pero puede empezar a trabajar con el modelo de objetos centrándose en un subconjunto muy pequeño de los objetos disponibles. Entre éstos se incluyen:
Esta seria una pequeña definición..muy practica
a) Application (representa la propia aplicación Excel)
b) Workbook (representa un libro en la aplicación Excel)
c) Worksheet (representa una hoja del libro )
d) Range ( representa una celda, una fila, una columna, una selección de celdas que contiene
uno o más bloques de celdas (que podrían ser contiguos o no), o incluso un grupo de celdas
de varias hojas. )
*será el objeto más utilizado en las aplicaciones de Excel
Modelo jerárquico
-------------------------------------------------------------------------
Application-->Workbooks-->Sheets --> Range
(Excel) --> (Libro) --> ( Hoja) --> (celda o celdas )
*Accediendo a la colección de libros accederemos
a un libro determninado.
-en este caso activamos "Libro1.xls"
- Workbooks("Libro1.xls").activate
-referenciar a el libro activo : ActiveWorkbook
*Igualmente de la colección de hojas indicamos una del conjunto
en este caso activamos la hoja "cuentas"
- Sheets("cuentas1").activate
-referenciar a la hoja activa : ActiveSheet
*Referenciando un rango:
* y activamos la celda A1
- Range("A1").activate
-la celda activa se referencia como : ActiveCell
Creo que ahora podemos darle otra orientación al tema de pronto seria importante ... tratar el tema de una forma
tal vez más amplia es decir ..explicar muy a groso modo el modelo de objetos de Microsoft Excel .....
Modelo de objetos de Excel (los primeros objetos de Excel que necesitamos conocer)
------------------------------------------------------------------------------------------
Como los datos de un documento de Excel están muy estructurados, el modelo de objetos es jerárquico y sencillo. Excel proporciona cientos de objetos con los que quizá desee interactuar, pero puede empezar a trabajar con el modelo de objetos centrándose en un subconjunto muy pequeño de los objetos disponibles. Entre éstos se incluyen:
Esta seria una pequeña definición..muy practica
a) Application (representa la propia aplicación Excel)
b) Workbook (representa un libro en la aplicación Excel)
c) Worksheet (representa una hoja del libro )
d) Range ( representa una celda, una fila, una columna, una selección de celdas que contiene
uno o más bloques de celdas (que podrían ser contiguos o no), o incluso un grupo de celdas
de varias hojas. )
*será el objeto más utilizado en las aplicaciones de Excel
Modelo jerárquico
-------------------------------------------------------------------------
Application-->Workbooks-->Sheets --> Range
(Excel) --> (Libro) --> ( Hoja) --> (celda o celdas )
*Accediendo a la colección de libros accederemos
a un libro determninado.
-en este caso activamos "Libro1.xls"
- Workbooks("Libro1.xls").activate
-referenciar a el libro activo : ActiveWorkbook
*Igualmente de la colección de hojas indicamos una del conjunto
en este caso activamos la hoja "cuentas"
- Sheets("cuentas1").activate
-referenciar a la hoja activa : ActiveSheet
*Referenciando un rango:
* y activamos la celda A1
- Range("A1").activate
-la celda activa se referencia como : ActiveCell
ejemplos macros excel vba
sub gridlines
'seria bueno que ejecutes el codigo linea por linea
'como te explique en algun post anterior
'debes dar click sobre la macro en la primera linea
'y luego de presionar f8 podras ejecutar tus macros de excel por pasos
ActiveWindow.DisplayGridlines = False ' quitar las lineas de la hoja
ActiveWindow.DisplayGridlines = True ' mostrar las lineas de la hoja
end sub
sub trabajndo_con_colores
'en el excel puedes modificar 56 colores
' en este ejemplo modificaremos el color 44 de la paleta de colores
ActiveWorkbook.Colors(44) = RGB(230, 230, 233)
'con esto cambias el color con el index 44 en todas las celdas del libro
'restablecer los colores por defecto
ActiveWorkbook.ResetColors
'copiar colores desde otro libro
ActiveWorkbook.Colors = Workbooks("coloradon.xls").Colors
'con esto copias los colores del libro "coloradon.xls" para tu libro activo.
'-------------------------
'y si solo quieres trabajar con una celda o selección
'como te dije puedes usar cualquiera delos 56 colore que la paleta de Excel
ActiveCell.Interior.ColorIndex = 16 'en este caso le asignamos color 16 a la celda
Selection.Interior.ColorIndex = 56 'ahora sobre la selección(una celda o varias)
end sub
'seria bueno que ejecutes el codigo linea por linea
'como te explique en algun post anterior
'debes dar click sobre la macro en la primera linea
'y luego de presionar f8 podras ejecutar tus macros de excel por pasos
ActiveWindow.DisplayGridlines = False ' quitar las lineas de la hoja
ActiveWindow.DisplayGridlines = True ' mostrar las lineas de la hoja
end sub
sub trabajndo_con_colores
'en el excel puedes modificar 56 colores
' en este ejemplo modificaremos el color 44 de la paleta de colores
ActiveWorkbook.Colors(44) = RGB(230, 230, 233)
'con esto cambias el color con el index 44 en todas las celdas del libro
'restablecer los colores por defecto
ActiveWorkbook.ResetColors
'copiar colores desde otro libro
ActiveWorkbook.Colors = Workbooks("coloradon.xls").Colors
'con esto copias los colores del libro "coloradon.xls" para tu libro activo.
'-------------------------
'y si solo quieres trabajar con una celda o selección
'como te dije puedes usar cualquiera delos 56 colore que la paleta de Excel
ActiveCell.Interior.ColorIndex = 16 'en este caso le asignamos color 16 a la celda
Selection.Interior.ColorIndex = 56 'ahora sobre la selección(una celda o varias)
end sub
nuevos ejemplos macros excel( codigo excel vba)
*aqui unos pequeños mini-macros.. para que continues con tus primeros pasos
en el vba.
'ojo logicamente para este ejemplo estas sobre un 'libro de prueba para que no pierdas algun avance sin guardar
sub cerrar_book1 'prueba1
ActiveWorkbook.Close 'con esto cierras tu libro.. sin guardar cambios
end sub
sub cerrar_book2 'prueba2
ActiveWorkbook.Close(True) ' cerrar guardando los cambios realizados
end sub
sub opens_wbk
'Abrir un libro de Excel ..desde una ruta conocida
Workbooks.Open FileName:="F:\examples\antiguos_modelos.xls"
end sub
sub obtener_name 'obtener el nombre del libro activo
MsgBox ActiveWorkbook.FullName
end sub
sub agreagar ' con esta macro agregas una nueva hoja en el libro activo
ActiveWorkbook.Sheets.Add
end sub
sub eliminar 'aqui eliminaremos la hoja "calculos1"
sheets("calculos1").delete
end sub
Sub select_primera 'activamos la primera hoja
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
'tambien podrias activarlo asi:
activeworkbook.sheets(1).activate
end sub
sub select_last 'activar la ultima hoja
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
end sub
sub new_sheet ' con este ejemplo podras Insertar una hoja nueva (en la posición que quieras)
ActiveWorkbook.Sheets.Add Before:=Worksheets("pagos_abril")
end sub
sub mover_sht 'ejemplo de como mover una hoja
Worksheets("hojaxxx").Move After:=Worksheets("hojayyy")
end sub
sub eliminar las_shts ' y si te molesta eliminar las hojas una por una
'puede seleccionar varias y eliminarlas con la sgte macro.
ActiveWindow.SelectedSheets.Delete
end sub
en el vba.
'ojo logicamente para este ejemplo estas sobre un 'libro de prueba para que no pierdas algun avance sin guardar
sub cerrar_book1 'prueba1
ActiveWorkbook.Close 'con esto cierras tu libro.. sin guardar cambios
end sub
sub cerrar_book2 'prueba2
ActiveWorkbook.Close(True) ' cerrar guardando los cambios realizados
end sub
sub opens_wbk
'Abrir un libro de Excel ..desde una ruta conocida
Workbooks.Open FileName:="F:\examples\antiguos_modelos.xls"
end sub
sub obtener_name 'obtener el nombre del libro activo
MsgBox ActiveWorkbook.FullName
end sub
sub agreagar ' con esta macro agregas una nueva hoja en el libro activo
ActiveWorkbook.Sheets.Add
end sub
sub eliminar 'aqui eliminaremos la hoja "calculos1"
sheets("calculos1").delete
end sub
Sub select_primera 'activamos la primera hoja
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
'tambien podrias activarlo asi:
activeworkbook.sheets(1).activate
end sub
sub select_last 'activar la ultima hoja
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
end sub
sub new_sheet ' con este ejemplo podras Insertar una hoja nueva (en la posición que quieras)
ActiveWorkbook.Sheets.Add Before:=Worksheets("pagos_abril")
end sub
sub mover_sht 'ejemplo de como mover una hoja
Worksheets("hojaxxx").Move After:=Worksheets("hojayyy")
end sub
sub eliminar las_shts ' y si te molesta eliminar las hojas una por una
'puede seleccionar varias y eliminarlas con la sgte macro.
ActiveWindow.SelectedSheets.Delete
end sub
Suscribirse a:
Entradas (Atom)