PROGRAMAR EN VBA MACROS PARA EXCEL: octubre 2016

Bolso de Piel Humor Grafico





Recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.













Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como conectar Excel con Word crear archivo e insertar texto





Siguiendo con el tema de macros que permiten conectar Excel con Word o manejar Word desde Excel, en esta oportunidad te presento una macro que permite crear un archivo de Word, algo que ya se mostró antes sin embargo ahora se adiciona el ingreso de texto en Word desde Excel. Las macros relacionadas sobre como conectar Word son Excel son las siguientes:

Como crear un archivo de Word con Excel
Como Abrir un archivo de Word con Excel
Como conectar Excel con Word crear archivo e insertar texto en Word

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


El ejemplo denominado como conectar Excel con Word crear archivo e insertar texto, que se puede descargar desde el link del final, permite crear un archivo de Word y luego insertar un texto que se encuentra en Excel; al presionar el botón que se esta en el libro de ejemplo, la macro crea un archivo de Word, luego inserta en Word el mismo texto que está en Excel en la celda B4, dejando listo para seguir editando el libro, con esto se muestra que se puede pasar cualquier texto, tabla (se mostrará en otra macro), dar formato, etc..

En el vídeo que está debajo se encuentra un explicación más gráfica y detallada de lo que realiza cada código de los expuestos,

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Sub ExcelEscribeWord()
Dim objWord As Word.Application, wdDoc As Word.Document, def As String
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set a = Sheets(ActiveSheet.Name)
Tex = a.Range("B4")
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set wdDoc = objWord.Documents.Add
MsgBox ("El libro se generó con éxito"), vbInformation, "AVISO"
objWord.ActiveDocument.Content.FormattedText.Text = Tex
objWord.Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub





Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Instrucción Do Loop While Until en macro de Excel






La instrucción Do ... Loop Until en VBA sirve para realizar un bucle en una macro de Excel, este código permite realizar indefinidamente la repetición de una secuencia de comandos, mientras la condición analizada sea falsa, en caso de ser verdadera el bucle termina.

La diferencia con la instrucción Do ... Loop While radica en que el bucle se realiza mientras la condición sea verdadera en cambio en la instrucción Do ... Loop Until el bucle se realiza mientras la condición siga siendo falsa.

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

La instrucción  Do... Loop Until permite realizar un bucle mientras la condición sea falsa, tiene dos formas de uso, se puede verificar la condición antes de ingresar a realizar el bucle, tendrá la siguiente estructura:

Do While cells (x,1) = empty

instrucciones

x=x+1
Loop 



La otra estructura es la siguiente, observese, que el bucle se ejecuta por lo menos una vez antes de analizar las condiciones para seguir el bucle.

Do

instrucciones

x=x+1
Loop Until cells (x,1) = empty


Es posible salir del bucle Do ... Loop a través de Exit Do dentro de las instrucciones, es decir por ejemplo si a través de la instrucción If Else End If puede que analice un cierto dato y si no cumple el criterio salir del bucle con Exit Do,

En el ejemplo cuya codificación se trascribe, la macro hace que busque los datos de la hoja uno en la hoja dos si los encuentra es correcto si no los encuentra escribe incorrecto, se una la instrucción Do ... Loop para realizar el bucle terminando cuando llegue a la última fila con datos.

Suscribe al blog para recibir en tu correo todas las actualizaciones, dispones también de un canal de You Tube donde encontrarás explicaciones de macros con mayor detalle.

Código que se inserta en un módulo



Sub busca()
Application.ScreenUpdating = False
Dim fila, fila1, numfila As Integer
fila = 2
fila1 = 2

Sheets("hoja1").Activate
Do
 If Sheets("hoja1").Cells(fila, 6) = "Incorrecto" Then
    Sheets("hoja1").Cells(fila, 6).Activate
    numfila = ActiveCell.Row
    Sheets("hoja2").Cells(fila1, 1) = Sheets("hoja1").Cells(fila, 1)
    Sheets("hoja2").Cells(fila1, 2) = Sheets("hoja1").Cells(fila, 2)
    Sheets("hoja2").Cells(fila1, 3) = Sheets("hoja1").Cells(fila, 3)
    Sheets("hoja2").Cells(fila1, 4) = Sheets("hoja1").Cells(fila, 4)
    Sheets("hoja2").Cells(fila1, 5) = Sheets("hoja1").Cells(fila, 5)
    Sheets("hoja2").Cells(fila1, 6) = numfila & " Incorrecto"
    fila1 = fila1 + 1
 End If
fila = fila + 1
Loop Until Sheets("hoja1").Cells(fila, 6) <> Empty
Application.ScreenUpdating = True
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Humor Gráfico Deseo





Recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.













Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como usar la instruccion Do ... Loop While en macro de Excel





La instrucción Do ... Loop While sirve para realizar un bucle, en una macro de VBA, es decir realizar un mismo procedimiento un número indeterminado de veces, se puede usar de dos formas una es estableciendo la condición para realizar el bucle, al principio o también puede ser al final, al diferencia es que si While está al final, el bucle por lo menos se realizará una vez. Difiere de la instrucción Do ... Loop Until en que el bucle se realiza siempre mientras la condición sea verdadera y en Do ... Loop Until se realiza el bucle mientras la condición siga siendo falsa.


Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.





Como ya se dijo Do... Loop While el bucle se ejecuta mientras la condición sea verdadera, tiene dos formas de uso, se puede verificar la condición antes de ingresar a realizar el bucle, tendrá la siguiente estructura:

Do While cells (x,1) = empty

instrucciones

x=x+1
Loop

Esta es una estructura clásica para recorre las celdas del libro de Excel, es decir While analizará si la celda que se está recorriendo en cada momento es vacía, es decir se llegó a la última fila con datos, en ese caso deja de realizar el bucle.

También se puede usar While al final, la diferencia es que en este caso el bucle por lo menos se realiza una vez, la estructura sería la siguiente:

Do

instrucciones

x=x+1
Loop While cells (x,1) = empty

En este caso se ingresa al bucle, se realiza una vez y se analiza la condición si es verdadera sigue, hasta que se haga falsa, en este caso se hará falsa cuando llegue a la última fila con datos, cada vez que el bucle realice un recorrido, en este ejemplo a la variable "x" se le suma uno, lo que representa que en el recorrido siguiente del bucle debe analizar la fila posterior y así sucesivamente hasta la última fila con datos, donde se analizará la condición y será falsa, por ende el bucle terminará.

En el ejemplo que se presenta, usa la instrucción Do ... Loop While, la macro permite sumar todas las celdas de un mismo color o lo que es lo mismo muestra como sumar celdas dependiendo de su color, verás como se usa la instrucción Do... Loop While para recorrer de la primera a la última fila con datos, a través de la instrucción If Then Else End If, se determinar el color de la celda y se suma en caso de corresponder, cuando el bucle llega al final, analiza si la celda que sigue es menor a la última celda con datos, en caso verdadero sigue en caso falso termina el bucle.


Do

If Cells(pf, "C").Interior.Color = 255 Then conta1 = conta1 + Cells(pf, "D").Value

If Cells(pf, "C").Interior.Color = 15773696 Then conta2 = conta2 + Cells(pf, "D").Value

pf = pf + 1
Loop While pf <= uf

Desde el link del final se puede descargar cientos de macros que puedes adaptar a tu proyecto, su uso es libre, si te fueron de utilidad considera la posibilidad de invitarme una tasa de café para seguir subiendo cosas útiles.

Código que se inserta en un módulo



Sub DarFormato()
Application.ScreenUpdating = False
Dim conta1 As Integer, conta2 As Integer
c1 = Range("C2").Interior.Color
c2 = Range("C3").Interior.Color
pf = 2
uf = Range("C" & Rows.Count).End(xlUp).Row
conta1 = 0
conta2 = 0
Do
If Cells(pf, "C").Interior.Color = 255 Then conta1 = conta1 + Cells(pf, "D").Value
If Cells(pf, "C").Interior.Color = 15773696 Then conta2 = conta2 + Cells(pf, "D").Value
pf = pf + 1
Loop While pf <= uf
Range("D16") = conta1
Range("D17") = conta2

Application.ScreenUpdating = True
End Sub
Sub borraformato()
Application.ScreenUpdating = False
Range("D16:D17").Clear
Application.ScreenUpdating = True
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como abrir un archivo Word con Excel





La macro que se muestra en el ejemplo permite abrir un archivo de Word con Excel, es otro de los ejemplos que se agregan relacionados sobre como conectar Excel con Word o como manejar Word desde Excel; en los links siguientes hay otros ejemplos relacionados sobre la manipulación de Word a travéz de macros de Excel.

Como Abrir un archivo de Word

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


El ejemplo básicamente permite a través de un botón que se encuentra en la hoja de Excel, crear una instancia de Word y luego abrir un archivo de Word quedando activado listo para poder escribir o editar, anteriormente mostré como crear un archivo de Word con Excel, en este caso el archivo ya está creado y desde Excel se abre el archivo para poder trabajar con el.

Debajo está la codificación que permite realizar lo mencionado, para comprender mejor el ejemplo, descarga GRATIS el archivo de ejemplo con la macro que se realiza desde el link del final; deberás descomprimir el archivo y guardarlos en la misma carpeta, hay un archivo de Excel con la Macro y un achivo de Word que es el que abre la macro, desde el vídeo que sigue verás una explicación más detallada y gráfica.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Sub AbreFicWord()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim objWord As Word.Application, wdDoc As Word.Document, def As String
Set a = Sheets(ActiveSheet.Name)
nom = a.Range("B4") & ".docx"
ruta = ThisWorkbook.Path & "\" & Range("B4") & ".docx"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set wdDoc = objWord.Documents.Open(ruta)
MsgBox ("El libro de word se abrió correctamente, ahora puede editarlo"), vbInformation, "AVISO"
objWord.Activate
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como incluir Ñ en bucle For Next con letras




Anteriormente se presentó un post que mostraba como realizar un bucle For Next con letras; dicho ejemplo presenta un problema a los hispano parlantes ya que no incluía la Ñ; el cual recomiendo usar si no es necesario incluir esta letra en lo que requieren, ya que mucho más sencilla la codi
ficación; pero si necesita que en el bucle esté la Ñ también, en este post te presento la solución al inconveniente planteado; es decir en el ejemplo se mostrara como realizar un blucle con la instrucción For Next con letras del abecedario incluyendo la letra Ñ.

Como es sabido For Next se usa para repetir una tareas o realizar un bucle una x cantidad de veces, es decir solo sirve si se expresa un rango de números; pero en cientos de casos requerimos realizar el bucle entre letras por orden alfabético, lo cual no esta permitido por la instrucción For Next, permitiendo sólo la siguiente estrucutura.

For x= 1 to 20

Instrucciones

Next x

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


Es inválida la estructura: For x = A to Z; ya que en su sintaxis se debe indicar el primer número del bucle y el último número del mismo; para evitar se tiene que apelar a variables y la tabla del código Ascii para recorrer con la instrucción For ...Next todas las letras del abecedario incluyendo la Ñ.

En dicha tabla, la letra A esta representada por el número 60, la B por el 61, la C por el 62 y así sucesivamente hasta la Z que es representada por el número 90; por ello es posible realizar un bucle utilizando la sintaxis correcta de la instrucción For Next, es decir que recorre desde el número 60  al 90; a su vez ir cargando en una variable la letra que se forma con el código Ascii representado por el número que se recorre en ese momento.

He aquí el problema con la letra Ñ que en la tabla mencionada es representada por 165, probemos presionar Alt + 165 y en pantalla aparecerá donde estemos escribiendo la letra Ñ

En el ejemplo anterior donde no se incluía la Ñ, basta con realizar un bucle entre el 60 y 90; pero en este caso como la Ñ es representada por el 165, debemos forzar a que sea teñida en cuenta; para ello apelamos a la instrucción IF, que va verificando que la letra del bucle en cada momento sea igual a O, en es ese caso para el bucle e introduce la letra Ñ en forma forzada; luego se sigue con el bucle con el resto de las letras, esto se realiza con esta parte del código.

If Chr(i) = "O" And conta = 0 Then
letra = "Ñ"
i = 78
conta = 1
End If

En el ejemplo las instrucciones contenidas en el bloque For ... Next simplemente es escribir en las celdas de Excel las letras del abecedario, pero se podría incorporar cualquier código o procedimiento, el ejemplo aquí presentado sólo controla que el bucle se realice entre tal y tal letra; pero que se debe realizar dentro de la instrucción For ... Next es cuestión de lo que requiera cada uno.

Te invito a descargar el ejemplo denominado como incluir la letra Ñ en un bucle For ... Next para recorrer las letras del abecedario; desde el link del final, en el vídeo siguiente verás una explicación y funcionamiento de la macro en forma más detallada por lo que sugiero lo visualices.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Sub LetrasConÑ()
Dim conta As Boolean, fila As Long, letra As String
Set A = Sheets(ActiveSheet.Name)
conta = 0
fila = 2
For i = 65 To 90
letra = Chr(i)
If Chr(i) = "O" And conta = 0 Then
letra = "Ñ"
i = 78
conta = 1
End If
A.Cells(fila, "A") = letra
fila = fila + 1
Next i
End Sub

Sub Borra()
Range("A:A").Clear
End Sub




Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como hacer un bucle For Next con letras del abecedario





Seguramente cuando se está realizando una macro se ha necesitado alguna vez realizar un bucle For Next con letras, es fácil si se realiza un bucle entre números, pero realizar el bucle ; lamentablemente la instrucción For ... Next sólo hace un bucle entre números, no hace bucle entre letras; es decir la instrucción sólo permite esta estructura:
recorren las letras del abecedario
con letras se complica; en este ejemplo que te presento, en vez de recorrer números, se

For x= 1 to 20

Instrucciones

Next x

Con lo que estamos diciendo que repita de 1 a 20 el código que este incluido dentro de la Instrucción For ... Next.

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


La instrucción For ... Next para realizar un bucle no permite por recorrer de la A a la Z, es decir la siguiente estructura no es válida: For x = A to Z.

Provocará un error, porque no es admitido por VBA, para solucionar este inconveniente, en este ejemplo se apelá a un pequeño artilugio que salva el problema permitiendo recorrer con la instrucción For ...Next todas las letras del abecedario o las letras que requieras.

El problema se puede sortear apelando al código Ascii, acá tienes la tabla de códigos Ascii; en la tabla, la letra A esta representada por el número 60, la B por el 61, la C por el 62 y así sucesivamente hasta la Z que es representada por el número 90; sabiendo esto, se recorre del 60 al 90 y el valor se asigna a una variable que irá cambiando de A a Z dependiendo del valor del código Ascii al realizar el bucle con For.... Next; utilizar este método tiene un problema para los lectores de habla hispana ya que la letra Ñ no se incluye en el recorrido del código Asccii del 60 al 90; ya que la Ñ en el mencionado código es  representada por el número 165; para saltar este inconveniente con la letra Ñ mira este otro ejemplo.

Para clarificar un poco el tema, si quisiéramos ver que letra representa el número 60 en la tabla de códigos Asccii, sólo basta presionar las teclas Alt + 60 y se escribirá la letra que corresponde a esa combinación de teclas.

En la codificación del ejemplo verán que se recorre los números del 60 al 90 y ese número es cargado en la variable letra que se hace igual a la letra que representa el código Ascii, que es formado por el valor de i en cada momento del recorrido del bulce.

For i = 65 To 90
letra = Chr(i)

Para observar en forma más gráfica y detallada lo narrado te sugiero mires el vídeo a continuación donde encontrarás una explicación extra, previamente descarga, en forma gratuita, desde el final de la página el ejemplo para su total comprensión.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Sub AbecedarioSN()
Dim conta As Boolean, fila As Long, letra As String
Set a = Sheets(ActiveSheet.Name)
fila = 2
For i = 65 To 90
letra = Chr(i)
a.Cells(fila, "A") = letra
fila = fila + 1
Next i
End Sub

Sub Clear()
Range("A:A").Clear
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends