Pase cualquier información entre aplicaciones VBA usando el Portapapeles

  • Michael Fisher
  • 0
  • 4551
  • 555
Anuncio

Justo cuando pensaba que había terminado con mi último lote de consejos y trucos de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel usando scripts de VBA Nuestra plantilla de código lo ayudará a configurar correos electrónicos automatizados desde dentro de Excel usando Collaboration Data Objects (CDO) y scripts VBA. , Descubrí una técnica más genial que cualquiera puede usar para pasar fácilmente información entre dos aplicaciones que utilizan VBA como lenguaje de scripts de back-end.

Lo bueno de VBA es que le brinda muchas de las funciones y herramientas 3 formas de abrir aplicaciones y Windows maximizadas con VB Script [Windows] 3 formas de abrir aplicaciones y Windows maximizadas con VB Script [Windows] Si hay una Lo que me encanta hacer es escribir scripts de VB. Ya sea que se trate de un archivo de secuencia de comandos de Windows o de una secuencia de comandos VBA dentro de una aplicación, la secuencia de comandos proporciona la capacidad de agregar funcionalidad a las aplicaciones ... que normalmente son parte de las aplicaciones de VB, aunque en una versión un tanto diluida.

Una de las partes más frustrantes de trabajar con VBA dentro de aplicaciones específicas es que no siempre es fácil obtener dos aplicaciones para “hablar” el uno al otro. Esto se debe a que todas las variables que está utilizando solo son accesibles dentro del alcance de la aplicación en sí, no desde cualquier otro lugar de la computadora.

Dicho esto, hay son formas de pasar información Cómo integrar datos de Excel en un documento de Word Cómo integrar datos de Excel en un documento de Word Durante su semana laboral, probablemente haya muchas veces que se encuentre copiando y pegando información de Excel a Word, o de otra manera alrededor. Así es como las personas a menudo producen informes escritos ... entre aplicaciones basadas en VBA como Word o Excel. En muchos casos, incluso en un entorno profesional, los programadores recurren a la comunicación entre aplicaciones con archivos de datos. Esto puede funcionar, pero introduce un elemento de posible manipulación o error, como la eliminación o modificación de esos archivos, para estropear el trabajo..

Otro enfoque que puede intentar para transacciones muy rápidas de información entre aplicaciones es pasar datos al portapapeles y luego leer esa información de la otra aplicación.

Pasando información usando el portapapeles

En este ejemplo, le mostraré cómo pasar tres datos de texto, valores dentro de 3 campos de texto, directamente a una hoja de cálculo de Excel que la macro de Word inicia.

La configuración inicial se muestra a continuación. Es un documento de Word donde cambié al modo de diseño y creé 3 etiquetas y 3 campos de texto para que el usuario ingrese información. Al hacer clic en el “Enviar” el botón iniciará el código de transferencia de datos.

Haga doble clic en el nuevo botón que ha creado en Modo de diseño para acceder a la pantalla del Editor de VB. Lo primero que querrá hacer es agregar la referencia que le da acceso al portapapeles del sistema. Haga clic en Herramientas - Referencias.

Desplácese hacia abajo en la lista de referencias y seleccione “Biblioteca de objetos de Microsoft Forms 2.0”. Una vez que hace clic en Aceptar, su sesión de edición de VB ahora tiene acceso a los métodos que le permiten leer o escribir desde el portapapeles.

Eso es exactamente lo que vamos a hacer ahora. En la función para el “Enviar” botón, he ingresado el siguiente código.

Dim strClipText As DataObject Dim strInputText As String Dim errCode As Integer Set strClipText = New DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txtBox3.Text. PutInClipboard 'Set objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Archivos de programa (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ")

¿Mira qué simple es? El objeto de datos strClipText es el objeto del portapapeles que puede manipular. Primero, lea todos los valores de campo en una sola variable de cadena, con cada campo de datos delimitado por una coma, o lo que sea que funcione para usted.

A continuación, deberá crear el archivo de Excel que está abriendo en el comando Shell anterior. En Excel, querrás agregar la misma referencia a “Biblioteca de objetos de Microsoft Forms 2.0”, y luego en la función Workbook.Open (), puede ejecutar el siguiente script.

Dim msObj As MSForms.DataObject Dim strText As String Dim strResult () As String Dim intArrayCount As Integer Dim x As Integer Set msObj = New MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResultTe, "(Split) ) intArrayCount = Application.CountA (strResult) For x = 0 To intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Cells (x + 1, 2) .Value = strResult (x) Siguiente

Nuevamente, cuando lo atraviesas, este es un script simple y muy rápido. Crea el objeto MSForms y obtiene los datos más recientes del portapapeles y los coloca en una variable de cadena. Luego, divide esa única variable de cadena larga por cualquier delimitador que haya utilizado en una matriz de cadenas individuales, y finalmente pasa a través de la matriz (CountA le da la longitud de la matriz) y genera cada valor en la hoja de la columna 2.

Aquí están los resultados finales.

Ahora, con un poco de creatividad, puede usar esta técnica para lanzar cualquier aplicación basada en VBA y “pegar” información en ella.

Siempre podría hacer lo mismo usando la biblioteca de referencia de Excel, pero en ese caso estaría abriendo silenciosamente el archivo de Excel y manipulando los datos dentro de ese archivo. En el caso anterior, literalmente está abriendo la aplicación Excel y mostrando el archivo, y dejando que la Macro de inicio en Excel haga el resto del trabajo..

Esto es más útil cuando hay otras aplicaciones, como muchas de las aplicaciones de interfaz de operador en muchas instalaciones de fabricación, que se basan en VBA pero que pueden no tener esas bibliotecas disponibles para vincular estrechamente las dos aplicaciones. Usar el portapapeles de una manera automatizada como esta es rápido, fácil y hace el trabajo.

Pruebe los scripts anteriores e infórmenos cómo funciona en su sistema. ¿Tuviste que modificarlo? ¿Tiene alguna sugerencia sobre cómo mejorar aún más el código? Comparte tus pensamientos en la sección de comentarios a continuación.

Crédito de imagen: Imagen de transferencia de archivos a través de Shutterstock




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.