Información de Soluciones VSTO

Mediante el uso de Microsoft Office como front-end de soluciones, puede beneficiarse de las conocidas interfaces de usuario y herramientas de Microsoft Office, como las características de procesamiento de texto de Word, las características de análisis de datos de Excel y las características de administración de correo electrónico de Outlook. Puede desarrollar soluciones en Visual Studio para personalizar las aplicaciones de Office y agregar las características específicas que necesite para sus procesos empresariales. Por ejemplo, puede convertir Word en un generador de contratos que ensamble contratos a partir de elementos previamente existentes que se pueden hacer modificables o no modificables. Con Excel puede crear una hoja de cálculo de presupuestos automatizada y personalizada para distintos proyectos. Los usuarios pueden aprovechar las soluciones de Office sin conexión, lo que hace que soluciones complejas resulten más prácticas de lo que serían si utilizase una arquitectura basada en web. Fuente de Microsoft

VBA Excel es el mas Conocido lenguaje de programación usado al momento de Crear Macros, Formularios, Módulos, Clases y Objetos
Sin Embargo este lenguaje es tan antiguo desde Excel 2003,2007,2010,2013 y 2015 (Desconozco anteriores versiones de Excel por lo cual solo detalle las Siguientes)

Aun Así no podemos negar que este lenguaje de Programación VBA Viene incluido en el Libro de Excel , lo cual nos permite interactuar directamente con este lenguaje..

Veamos aquí un Ejemplo de Excel usando un Bucle For Next con un Select case para llenar las Columnas 4,5,6 dependiendo del Origen que en este caso es la Cuenta Contable.

Subscribe para Recibir Material y Convertirte en un Experto de Excel

[vb] Option Explicit
‘VISUAL BASIC APLICACIONES (VBA) – LENGUAJE VB 6.0
Sub Ejecutar()
Dim x As Integer

For x = 2 To Range(“a5000”).End(xlUp).Row

Select Case Mid(Cells(x, 1).Value, 1, 1)
‘ Tipo de Cuentas
Case 0 ‘CUENTAS DE ORDEN
Cells(x, 4) = “OR”
Case 1, 2, 3, 4, 5 ‘BALANCE GENERAL
Cells(x, 4) = “BG”
End Select
Select Case Mid(Cells(x, 1).Value, 1, 2)
Case 60, 61, 62, 63, 64, 65, 67, 68 ‘RESULTADO POR NATURALEZA
Cells(x, 4) = “EN”

Case 66, 69, 91, 94, 95, 97 ‘RESULTADO POR FUNCION
Cells(x, 4) = “EF”

Case 70, 73, 74, 75, 76, 77, 78 ‘RESULTADO POR FUNCION Y NATURALEZA
Cells(x, 4) = “NF”

Case 71, 72, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 96, 98, 99 ‘NINGUNO
Cells(x, 4) = “N”
End Select

Select Case Mid(Cells(x, 1).Value, 1, 1)
‘Tipo de Elementos
Case 1, 2, 3 ‘ACTIVO
Cells(x, 5) = “A”
Case 4, 5 ‘PASIVO
Cells(x, 5) = “P”
Case 7 ‘INGRESO
Cells(x, 5) = “I”
Case 6 ‘GASTOS
Cells(x, 5) = “G”
Case 8, 9 ‘NINGUNO
Cells(x, 5) = “N”
End Select

‘CUENTA DE REGISTRO
Select Case Len(Cells(x, 1).Value)
Case Is = 6
Cells(x, 6) = 1
Case Is < 6 Cells(x, 6) = 0 Case Is > 6
Cells(x, 6) = 0
End Select

Next
End Sub
[/vb]

Este es el mismo Código en Visual Studio usando el VSTO, lo único que se Nota a simple Vista como Cambio es declarar el Objeto:

[vb]Dim Worksheet As Excel.Worksheet = Globals.ThisWorkbook.Worksheets(“PLAN”)[/vb]

Código Completo en Visual Studio – Solución VSTO Excel

[vb]Option Explicit
‘VISUAL ESTUDIO – VSTO EXCEL – LENGUAJE VB.NET
Sub Aplicar_Formato()
Dim Worksheet As Excel.Worksheet = Globals.ThisWorkbook.Worksheets(“PLAN”)
With Worksheet
For fila As Integer = 2 To .Range(“a5000”).End(Excel.XlDirection.xlUp).Row

‘ Tipo de Cuentas
Select Case Mid(Convert.ToString(.Cells(fila, 1).Value), 1, 1)
Case 0 ‘ORDEN
.Cells(fila, 4) = “OR”
Case 1, 2, 3, 4, 5 ‘BALANCE GENERAL
.Cells(fila, 4) = “BG”
End Select
Select Case Mid(Convert.ToString(.Cells(fila, 1).Value), 1, 2)
Case 60, 61, 62, 63, 64, 65, 67, 68 ‘RESULTADO POR NATURALEZA
.Cells(fila, 4) = “EN”

Case 66, 69, 91, 94, 95, 97 ‘RESULTADO POR FUNCION
.Cells(fila, 4) = “EF”

Case 70, 73, 74, 75, 76, 77, 78 ‘RESULTADO POR FUNCION Y NATURALEZA
.Cells(fila, 4) = “NF”

Case 71, 72, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 96, 98, 99 ‘NINGUNO
.Cells(fila, 4) = “N”
End Select

Select Case Mid(Convert.ToString(.Cells(fila, 1).Value), 1, 1)
‘Tipo de Elementos
Case 1, 2, 3 ‘ACTIVO
.Cells(fila, 5) = “A”
Case 4, 5 ‘PASIVO
.Cells(fila, 5) = “P”
Case 7 ‘INGRESO
.Cells(fila, 5) = “I”
Case 6 ‘GASTOS
.Cells(fila, 5) = “G”
Case 8, 9, 0 ‘NINGUNO
.Cells(fila, 5) = “N”
End Select

‘CUENTA DE REGISTRO
Select Case Len(Convert.ToString(.Cells(fila, 1).Value))
Case Is = 6
.Cells(fila, 6) = 1
Case Is < 6
.Cells(fila, 6) = 0
Case Is > 6
.Cells(fila, 6) = 0
End Select
Next
End With
End Sub[/vb]

Código mas Moderno en VSTO Excel – C#
Aquí el Código es muchos mas diferente y talvez Confuso ya que se Usan llaves de apertura y cierre.
 [csharp]// Option Explicit
//VISUAL ESTUDIO – VSTO EXCEL – LENGUAJE C#
internal void Aplicar_Formato() {
Excel.Worksheet Worksheet = Globals.ThisWorkbook.Worksheets(“PLAN”);
for(int fila= 2; fila<= Worksheet.Range(“a5000”).End(Excel.XlDirection.xlUp).Row; fila++){
// Tipo de Cuentas
switch(Mid(Convert.ToString(Worksheet.Cells(fila, 1).Value), 1, 1)){
case 0: //ORDEN
Worksheet.Cells(fila, 4) = “OR”;
break;
Case 1:
case 2: case 3: case 4: case 5: //BALANCE GENERAL
Worksheet.Cells(fila, 4) = “BG”;
break; }
switch(Mid(Convert.ToString(Worksheet.Cells(fila, 1).Value), 1, 2)){
case 60: case 61: case 62: case 63: case 64: case 65:                    break;
Case 67:
case 68: //RESULTADO POR NATURALEZA
Worksheet.Cells(fila, 4) = “EN”;
Case 66:
case 69: case 91: case 94: case 95: case 97: //RESULTADO POR FUNCION
Worksheet.Cells(fila, 4) = “EF”;
Case 70:
case 73: case 74: case 75: case 76: case 77: case 78: //RESULTADO POR FUNCION Y NATURALEZA
Worksheet.Cells(fila, 4) = “NF”;
Case 71:
case 72: case 79: case 80: case 81: case 82: case 83: case 84: case 85: case 86: case 87: case 88: case 89: case 90: case 92: case 93: case 96: case 98: case 99: //NINGUNO
Worksheet.Cells(fila, 4) = “N”;
break; }
switch(Mid(Convert.ToString(Worksheet.Cells(fila, 1).Value), 1, 1)){
//Tipo de Elementos
case 1: case 2: case 3: //ACTIVO
Worksheet.Cells(fila, 5) = “A”;
break;
Case 4:
case 5: //PASIVO
Worksheet.Cells(fila, 5) = “P”;
break;
case 7: //INGRESO
Worksheet.Cells(fila, 5) = “I”;
break;
case 6: //GASTOS
Worksheet.Cells(fila, 5) = “G”;
Case 8:
case 9: case 0: //NINGUNO
Worksheet.Cells(fila, 5) = “N”;
break; }
//CUENTA DE REGISTRO
switch(Len(Convert.ToString(Worksheet.Cells(fila, 1).Value))){
Case Is = 6:
Worksheet.Cells(fila, 6) = 1;
break;
Case Is < 6:
Worksheet.Cells(fila, 6) = 0;
break;
Case Is > 6:
Worksheet.Cells(fila, 6) = 0;
break; }
}
}[/csharp]
Si estas Interesado en este Tipo de Artículos SUSCRIBETE AQUI

5 thoughts on “Solución de Excel en C#, VB, NET Y VBA

  1. Estimado Fernando:

    Un favor me puede indicar el link para ingresar al Facebook de Excel Servicios no me es posible ingresar.

    Muchas gracias

    Danny Martin Pachas Gonzales

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *