Saltar al contenido

VSTO


Abraham Valencia

Recommended Posts

publicado

Cinco años alejado de la programación y en general de la informática y me doy con la sorpresa de que el VBA sigue tan vigente como antes y que VSTO no es tan usado como se avizoró hace unos años. Es más, por ejemplo la información sobre VSTO en castellano sigue siendo tan escasa como el año 2012 y por lo visto, al menos es la impresión que me dejan estas 48 horas de retorno a este mundo, seguirá siendo así de escasa por algún tiempo. En todo caso, me queda la duda de si dentro de unos años (¿quizá cinco otra vez?) la cosa seguirá igual o ahora sí se cumplirán los "oscuros" pronósticos que se dio sobre VBA y los "brillantes" que se dio sobre VSTO, aunque esos últimos bastante promovidos por Microsoft.

Saludos a todos, en especial a los "viejos" fieles a este gran foro

Abraham Valencia

PD: No encontré otro lugar en dónde colocar este mensaje. 

publicado

hola, a todos !

(hasta donde se) VSTO nunca fue pensado como sucesor o sustituto de VBA, sino como "el regreso" de la edición "Developer" de Office/Excel 2000 y XP que incluían una (mini)plataforma de lenguaje primario de programación para desarrollar complementos de compilación .COM entre aplicaciones Office

Create VSTO Add-ins for Office by using Visual Studio

Visual Studio Tools for Office

saludos,
hector.

publicado

Hola Héctor Miguel, veo que sigues tan activo por los foros como hace unos años. Gracias por responder. Como hablábamos con varios hace unos años, creo que varios sabemos que la intención de Microsoft no era reemplazar el VBA por VSTO pero en más de una discusión al respecto, recuerdo a muchas personas comentar que ese era el "destino", por eso los comentarios de mi mensaje. Es más, aún recuerdo el "terror" de algunos amigos cuando Office 2008 para Mac no incluyó VBA (aunque creo que después volvieron a incluirlo). Sobre VSTO, hice algunas cosas (a modo de ejercicio en realidad) el año 20111 o 2012  a través de mi VS 2010.

Igual me sigue dando curiosidad el que, aparentemente, VSTO no haya "pegado" tanto

Abraham Valencia

 

publicado

cierto... sigo siendo tan aprendiz de excel como hace algunos años

el caso de excel:mac 2008 se pudo seguir solventando gracias a que las hojas de macros del (viejo ?) excel v4 siguen siendo funcionales

a propósito, solo conozco a dos personas (en el mundo) que siguen programando en esas hojas de macros (ambos estamos en la región de guadalajara mexico -pero solo yo participo en foros de consulta-), aunque se de varios que "se desenvuelven holgadamente" al hablar de las macro-funciones de la versión 4 (como si de verdad conocieran ese tipo de programación), ya puedes imaginar quien sigue siendo el "promotor" del (viejo ?) excel v4, que por cierto, esta SI que es una preocupación, ya que también ha habido "advertencias" (desde la versión 2007) por parte de la corporación de que dejaran de dar soporte a esas macro-funciones que (dicho sea de paso) conservan aun ventajas que no existen en la plataforma de vba <\°|°/>

con respecto de VSTO (supongo que) su baja utilización obedezca a que a los usuarios que buscan "seguridad" para sus proyectos de macros (en realidad) nunca les dio por buscar hacer complementos COM(pilados) en lenguajes primarios de programación, ademas de que las ediciones "developer" no fueron suficientemente promocionadas (?)

saludos,
hector.

publicado
En 11/11/2017 at 16:40 , avalencia dijo:

Cinco años alejado de la programación y en general de la informática y me doy con la sorpresa de que el VBA sigue tan vigente como antes y que VSTO no es tan usado como se avizoró hace unos años. Es más, por ejemplo la información sobre VSTO en castellano sigue siendo tan escasa como el año 2012 y por lo visto, al menos es la impresión que me dejan estas 48 horas de retorno a este mundo, seguirá siendo así de escasa por algún tiempo. En todo caso, me queda la duda de si dentro de unos años (¿quizá cinco otra vez?) la cosa seguirá igual o ahora sí se cumplirán los "oscuros" pronósticos que se dio sobre VBA y los "brillantes" que se dio sobre VSTO, aunque esos últimos bastante promovidos por Microsoft.

Saludos a todos, en especial a los "viejos" fieles a este gran foro

Hola @avalencia! Dicho esto por alguien que ha trabajado por VSTO no queda mas que pensar que VBA durara lo que dure Excel....

Yo quise aprender VSTO pero me desmotivaba el tener que instalar IDE's pesados y aprender .NET pero imagino que deben tener sus grandes ventajas en cuanto al uso de estructuras de datos mas eficientes y mas a la hora de aplicarlo a Office. Y concuerdo nunca hubo gran cantidad de documentación al respecto.

Saludos!

publicado

Hola, gracias por seguir contestando el tema.

Primero, sí, creo que mientras haya Excel, hay que seguir pensando en VBA.

Segundo, definitivamente no hay mucha lectura al respecto, y menos en castellano.

Tercero, y siguiendo tu idea, creo que sí, algunas de las desventajas son que hay que tener instalado el Visual Studio y saber un poco de Net. En el VSTO el lenguaje para, por ejemplo crear archivos de Excel, es parecido al VBA pero definitivamente hay diferencias. Creo que otra desventaja es que los archivos que creas (OJO, no  hablo de los complementos), para poder ser usados deben "instalarse" en la PC en donde quieres usarlos y creo que esa es una práctica no habitual para los usuarios habituales de Excel. Claro, eso va de la mano de lo que sí creo que es una gran ventaja, al menos para algunos (no me incluyo necesariamente) ya que al estar el archivo Excel "instalado" (lo que no significa que ahora sea un ejecutable - *.exe) puedes hace uso de todo lo que le incluiste (formularios VB, rutinas, etc.)  y será imposible que vean el código fuente y/o que lo modifiquen intencionalmente o por error. Otra que creo que sería una ventaja, es que si tu programación es buena, incluso puedes hacer el archivo "actualizable". Por si acaso, estos son mi comentarios en base a mi experiencia, quizá otros no los compartan y definitivamente debe haber más ventajas y seguro también desventajas. 

Saludos

Abraham Valencia

PD: Gracias Gerson por la (re) bienvenida, y gracias Hector Miguel (sí recuerdo que te encantan las Macro Funciones, he revisado algunas conversaciones  en las que ambos intervenimos sobre el tema aunque definitivamente soy un novato en ese tema, a pesar de la "antigüedad" )

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.