lunes, 12 de agosto de 2013

Servicio de programación e implementación de programas y aplicaciones (software)

Se presta el servicio de programación e implementación de programas y aplicaciones (software) para:

  • Sistemas de cotización con base en listas de precios o costos de materias primas y costos de fabricación.
  • Gestión de ingreso y salida de empleados.
  • Gestión de clientes CRM (modelos de actuación comercial) 
  • Gestión de información de empleados.
  • Control de Inventarios
Datos de Contacto:
Jhon Jairo Arenas G.
jjarenas616@hotmail.com
CEL: 3146218146

jueves, 8 de agosto de 2013

VB.NET: CODIGO PARA MODIFICAR CELDAS DE EXCEL CON VALORES O TEXTOS DE UN TEXTBOX

Para modificar una celda de Excel con el contenido de un Textbox, iniciaremos  abriendo el libro de Excel:
 1)Primero hay que adicionar la referencia del Excel
a) clic en Menu Project
b) clic en Add Reference
c) clic en Pestaña COM
d) Seleccionar Microsoft Excel XX.X Object Library
e) clic en ok
f) Luego insertamos el siguiente codigo en la rutina deseada:
Imports Microsoft.Office.Interop.Excel
Private Sub XXXXXXX
Dim xlibro As Microsoft.Office.Interop.Excel.Application
    Dim strRutaExcel As String
    Dim Workbooks As String

'El siguiente codigo es para crear la ruta,entre comillas se pone la ruta donde esta el libro
strRutaExcel = "C:\Libro1.xls"
'El siguiente codigo es para abrir el libro y hacerlo visible, si se quiere dejar el libro oculto, se cambia la palabra True por False
xlibro = CreateObject("Excel.Application")
        xlibro.Workbooks.Open(strRutaExcel)
        xlibro.Visible = True
'Ahora podemos llevar el contenido de un textbox a una celda de excel expecifica copn la siguiente instrucción
'Activamos el libro
xlibro.Workbooks("boton.xlsm").Activate()

'Activamos la hoja especifica del libro   
xlibro.Sheets("Hoja1").Select()

'esta es la instruccion para modificar la celda con el contenido de un textbox llamado textbox1, ustedes le pueden poner el nombre que deseen al textbox
xlibro.Range("A1").Value = Textbox1.Text

End Sub

Ya tenemos el libro abierto, para cerrarlo simplemente adicionamos el siguiente código en la ubicación deseada, siempre debe estar más abajo del código que usamos para abrir el libro y antes del  End Sub o en un proceso posterior, ya que de lo contrario resultaría un error.
xlibro.Workbooks("Libro1.xls").Close()



VB.NET: CODIGO PARA ACTIVAR O DESACTIVAR ALERTAS DE EXCEL

Primero se debe crear el objeto de acuerdo con los siguientes pasos:

1)Primero hay que adicionar la referencia del Excel
a) clic en Menu Project
b) clic en Add Reference
c) clic en Pestaña COM
d) Seleccionar Microsoft Excel XX.X Object Library
e) clic en ok
f) Luego insertamos el siguiente código en la rutina deseada:


Imports Microsoft.Office.Interop.Excel

Private Sub XXXXXXX
Dim xlibro As Microsoft.Office.Interop.Excel.Application


' Para activar o desactivar las alertas simplemente usamos la palabra True o False en la siguiente instrucción
xlibro.DisplayAlerts = True
  
End Sub


VB.NET: CODIGO PARA SALTAR ERRORES

En ocasiones necesitamos que el código finalice automaticamente cuando encuentre un error en el proceso, sin entrar en un proceso cíclico infinito o sin bloquear la aplicación  para esto utilizamos la siguiente instrucción:

On Error GoTo error2
' Aquí ponemos el proceso que deseamos realizar


'Opcionalmente se puede agregar un mensaje de texto, como el siguiente, al final de proceso para estar seguro de que se ejecutó la acción de forma correcta.

MsgBox("Proceso finalizado de forma correcta")



' En caso de que no se detecten errores en el proceso, ponemos la siguiente instrucción, para que no nos aparezca ningún error y se finalice el proceso.
Exit Sub



' finalizamos con la siguiente instrucción
error2:


'Opcionalmente se puede agregar un mensaje de texto, como el siguiente, al final de proceso para saber si se ha encontrado un error.


        MsgBox("Se ha encontrado un error")

VB.NET: CODIGO PARA BUSCAR Y REEMPLAZAR UN TEXTO DE WORD DESDE UN TEXTBOX

Primero se debe tener el documento abierto y activo

Para seleccionar un texto especifico de un documento de word y reemplazarlo por el contenido de un Textbox usamos la siguiente instrucción:

Iniciaremos con el código para abrir el documento:
1)Primero hay que adicionar la referencia de Word
a) clic en Menu Project
b) clic en Add Reference
c) clic en Pestaña COM
d) Seleccionar Microsoft Word XX.X Object Library
e) clic en ok
f) Luego insertamos el siguiente codigo en la rutina deseada:

Imports Microsoft.Office.Interop.Word

Private Sub XXXXXXX
Dim wd As Microsoft.Office.Interop.Word.Application
    Dim wDoc As Microsoft.Office.Interop.Word.Document
    Dim strRutaWord As String
'El siguiente codigo es para crear la ruta,entre comillas se pone la ruta donde esta el documento
strRutaWord = "C:\Documento.doc"
       
 
'El siguiente código es para abrir el documento y hacerlo visible, si se quiere dejar el documento oculto, se cambia la palabra True por False
wd = CreateObject("word.Application")
        wDoc = wd.Documents.Open(strRutaWord)
        wd.Visible = True



        wd.Selection.Find.ClearFormatting()
        wd.Selection.Find.Replacement.ClearFormatting()
        With wd.Selection.Find
            .Text = "TEXTO A BUSCAR Y REEMPLAZAR"
            .Replacement.Text = TEXTBOX1.Text
            .Forward = True
            .Wrap = WdFindWrap.wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        wd.ActiveWindow.Selection.Find.Execute(ReplaceWith:=TEXTBOX1.Text)

End Sub


si se quisiera reemplazar el texto por alguna cadena de texto especifica cualquiera, reemplazamos la ultima parte del código por

wd.Selection.Find.ClearFormatting()
        wd.Selection.Find.Replacement.ClearFormatting()
        With wd.Selection.Find
            .Text = "TEXTO A BUSCAR Y REEMPLAZAR"
            .Forward = True
            .Wrap = WdFindWrap.wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With

     wd.ActiveWindow.Selection.Find.Execute(ReplaceWith:= "TEXTO NUEVO")




VB.NET: ABRIR UN DOCUMENTO DE WORD

1)Primero hay que adicionar la referencia de Word
a) clic en Menu Project
b) clic en Add Reference
c) clic en Pestaña COM
d) Seleccionar Microsoft Word XX.X Object Library
e) clic en ok
f) Luego insertamos el siguiente codigo en la rutina deseada:

Imports Microsoft.Office.Interop.Word

Private Sub XXXXXXX
Dim wd As Microsoft.Office.Interop.Word.Application
    Dim wDoc As Microsoft.Office.Interop.Word.Document
    Dim strRutaWord As String
'El siguiente código es para crear la ruta,entre comillas se pone la ruta donde esta el documento
strRutaWord = "C:\Documento.doc"
       
 
'El siguiente código es para abrir el documento y hacerlo visible, si se quiere dejar el documento oculto, se cambia la palabra True por False
wd = CreateObject("word.Application")
        wDoc = wd.Documents.Open(strRutaWord)
        wd.Visible = True
End Sub


VB.NET: ABRIR O CERRAR UN LIBRO DE EXCEL

Iniciaremos con el código para abrir el libro:
1)Primero hay que adicionar la referencia del Excel
a) clic en Menu Project
b) clic en Add Reference
c) clic en Pestaña COM
d) Seleccionar Microsoft Excel XX.X Object Library
e) clic en ok
f) Luego insertamos el siguiente codigo en la rutina deseada:

Imports Microsoft.Office.Interop.Excel
Private Sub XXXXXXX
Dim xlibro As Microsoft.Office.Interop.Excel.Application
    Dim strRutaExcel As String
    Dim Workbooks As String

'El siguiente codigo es para crear la ruta,entre comillas se pone la ruta donde esta el libro
strRutaExcel = "C:\Libro1.xls"

'El siguiente codigo es para abrir el libro y hacerlo visible, si se quiere dejar el libro oculto, se cambia la palabra True por False
xlibro = CreateObject("Excel.Application")
        xlibro.Workbooks.Open(strRutaExcel)
        xlibro.Visible = True
End Sub

Ya tenemos el libro abierto, para cerrarlo simplemente adicionamos el siguiente codigo en la ubicación deseada, siempre debe estar más abajo del código que usamos para abrir el libro o en un proceso posterior, ya que de lo contrario resultaría un error.
xlibro.Workbooks("Libro1.xls").Close()


miércoles, 7 de agosto de 2013

Excel: Crear botón y vincularlo a una macro


Excel: Asignar nombre a una celda


Excel: Dar formato condicional a una celda


Excel: Activar pestaña de programador


Excel: Dar formato a celda


Excel: Crear lista deplegable


Excel: Vincular variable a una celda de excel for-next

Vamos a aprender a vincular una variable a una celda de excel o a un rango de excel por medio del comando for-next, para recorrer las celdas del rango entre A1 y A100 y resaltar las celdas que tengan un valor diferente de 0

For i = 0 To 98

If Range("A" & 1 + i).value <> 0 Then

Range("A" & 1 + i).Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

end if

next i


Excel: Condicionales If - then - else - next

Para trabajar con condicionales, primero es preciso entender que significa cada parámetro, como se explica a continuación:

If: sirve para iniciar la condición que queremos expresar y significa "SI"

Condición: Es la condición que queremos validar

then: Se pone al final de la condición y puede traducirse como "ENTONCES"

Acción verdadero: Es la acción que queremos que haga la macro si la condición se cumple

else: Se utiliza como conexión para expresar otra acción y puede traducirse como "DE LO CONTRARIO"

Acción falso: Es la acción que queremos que haga la macro, si la condición no se cumple


End if: Sirve para expresar la finalizacion del condiciona

La estructura quedaría así:

If   Condición  then

      Acción Verdadero

      else

      Acción Falso

End if


Vamos a hacer algunos ejemplos prácticos para ilustrar la ejecución de un condicional:

1) Cambiar color a celda si posee un valor mayor que un numero especifico

Vamos a suponer que necesitamos saber si una celda posee un valor mayor que 100, por lo cual haremos que la celda se ponga en color rojo si posee un valor mayor que 100, de lo contrario, si la celda tiene un valor menor que 100, se debe poner en color verde.


Sub Macro1()


If Range("A1").value  > 100 Then

Range("A1").Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    Else
    
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
    
End Sub

Se pueden utilizar las siguientes expresiones para jugar con los valores:

> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
<> Diferente de



2) Cambiar color a celda si posee un texto especifico
Vamos a suponer que necesitamos saber si una celda posee el texto "FALSO", por lo cual haremos que la celda se ponga en color rojo si posee el texto "FALSO", de lo contrario, si la celda tiene un texto diferente o esta vacía, se debe poner en color verde.


Sub Macro1()


If Range("A1").text = "FALSO"  Then

Range("A1").Select

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    Else
    
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
    
End Sub

Esta instrucción funciona para cualquier texto, lo importante es ser cuidadoso con la escritura y ortografía, ya que la macro solo ejecutara la acción si encuentra el texto idéntico, tener especial cuidado con signos de puntuación, espacios y tildes en las palabras.

Hasta ahora hemos editado celdas especificas cuando cumplen las condiciones, pero en ocasiones se requiere cambiar el formato en la celda que este activa o seleccionada en el momento como veremos ahora:

3) Cambiar formato a celda activa si posee un valor mayor que  100

Sub Macro2()

If ActiveCell.value > 100 Then

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Else
 
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
 
 
End Sub

4) Cambiar formato a celda activa o seleccionada si posee texto especifico

Sub Macro1()

If ActiveCell.Text = "FALSO" Then

    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    Else
    
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
    
End Sub

Ahora vamos a suponer que necesitamos comparar los valores de dos celdas especificas

5) Si el VALOR de una celda especifica es igual al de otra celda, se cambiara el color

Sub Macro2()

If Range("A1").Value = Range("A2").Value Then


Range("A1").Select


    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Else
 
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
 
 
End Sub


6) Si el TEXTO de una celda especifica es igual al de otra celda, se cambiara el color

Sub Macro2()

If Range("A1").text = Range("A2").text Then


Range("A1").Select


    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Else
 
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
 
 
End Sub

7) Ahora vamos a suponer que tenemos una lista de números y queremos cambiar de color a las celdas de la lista que tienen un valor mayor a 100.

Para esto usaremos la función for - next, que sirve para recorrer valores uno a uno de forma automática y se puede enlazar con un condicional anidado para hacer tareas rápidamente

vamos a suponer que tenemos 100 valores ubicados entre las celdas A1 y A99 y vamos a cambiar a color verde las celdas que tengan valores menores que 100, y vamos a cambiar a color rojo las celdas que tengan valores menores que 100

así quedaría la instrucción:

For i = 0 To 98

If Range("A" & 1 + i).Value > 100 Then


Range("A" & 1 + i).Select


    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Else
 
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
 
Next i

End Sub

funciona similar si queremos hacerlo con un texto especifico:

For i = 0 To 98

If Range("A" & 1 + i).Text = falso Then


Range("A" & 1 + i).Select


    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
 
    Else
 
With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

End If
 
Next i

End Sub














Introduccion

Buen dia para todos

Mi nombre es Jhon Jairo Arenas Giraldo y soy de Medellin, Colombia; he creado este blog para compartir algunos conocimientos que he adquirido acerca de Excel y Visual Basic.NET, en el ejercicio de la ingeniería.

Soy autodidacta y siempre me ha gustado la programación de herramientas de Excel y Visual Basic, ya que ha sido una necesidad en mi carrera, que me ha ayudado a realizar tareas con una reducción importante de tiempos de operación y de forma mas ordenada. 

Aunque no soy un experto, ya tengo un camino recorrido y espero poder aportar en el crecimiento de las personas que van en ascenso.

"Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas"
Albert Einstein