Pase cualquier información entre aplicaciones VBA usando el portapapeles

Pase cualquier información entre aplicaciones VBA usando el portapapeles / Windows

Justo cuando pensé 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 mediante scripts de VBA Cómo enviar correos electrónicos desde una hoja de cálculo de Excel mediante scripts de VBA Nuestra plantilla de código le ayudará a configurar correos electrónicos automatizados desde dentro de Excel usando Collaboration Data Objects (CDO) y scripts de VBA. Lea más, descubrí una técnica realmente genial que cualquiera puede usar para pasar fácilmente información entre dos aplicaciones que utilizan VBA como lenguaje de programación de back-end..

Lo bueno de VBA es que le brinda muchas de las características y herramientas 3 maneras de abrir aplicaciones y Windows maximizado con VB Script [Windows] 3 maneras de abrir aplicaciones y Windows maximizado con VB Script [Windows] Si hay una Lo que me encanta hacer, es escribir scripts VB. Ya sea un archivo de Windows Script o un script VBA dentro de una aplicación, los scripts brindan la capacidad de agregar funcionalidad a las aplicaciones ... Leer más que normalmente son parte de las aplicaciones de VB, aunque en una versión algo diluida.

Una de las partes más frustrantes de trabajar con VBA dentro de aplicaciones específicas, es que no siempre es fácil conseguir dos aplicaciones “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, no desde cualquier otra parte 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, es probable que haya muchas veces que copie y pegue información de Excel en Word, o de otra manera alrededor. Así es como la gente a menudo produce informes escritos ... Lea más 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 desordenar las obras..

Otro enfoque que puede probar para transacciones de información muy rápidas entre aplicaciones es pasar los 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 información de texto (valores dentro de 3 campos de texto) directamente a una hoja de cálculo de Excel que lanza la macro de Word.

La configuración de inicio 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 escriba la información. Haciendo clic en el “Enviar” botón lanzará el código de transferencia de datos.

Haga doble clic en el nuevo botón que ha creado en el modo de diseño para ingresar a la pantalla del editor 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 haga clic en Aceptar, su sesión de edición de VB ahora tendrá 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 introducido el siguiente código.

Dim strClipText As DataObject Dim strInputText As String Dim errCode As Integer set strClipText = Nuevo DataObject strInputText = ThisDocument.txtBox1.Value y la leyenda de la mano PutInClipboard 'Establecer 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 los campos en una sola cadena, con cada campo de datos delimitado con una coma, o lo que sea que más le convenga..

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. ) intArrayCount = Application.CountA (strResult) para x = 0 To intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Cells (x + 1, 2) .Value = strResult (x) Next

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 usó en una matriz de cadenas individuales, y finalmente pasa por la matriz (CountA le da la longitud de la matriz) y envía cada valor a la hoja en la columna 2.

Aquí están los resultados finales.

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

Siempre puede hacer lo mismo utilizando 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, está literalmente 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 no tienen esas bibliotecas disponibles para vincular estrechamente las dos aplicaciones. Usar el portapapeles de forma automática como esta es rápido, fácil y hace el trabajo.

Pruebe los scripts anteriores y díganos cómo funciona en su sistema. ¿Tuviste que pellizcarlo? ¿Tiene alguna sugerencia sobre cómo hacer que el código sea aún mejor? Comparte tus pensamientos en la sección de comentarios a continuación.

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

Obtenga más información sobre: ​​Microsoft Excel, Microsoft Word, Programación, Hoja de cálculo, Programación de Visual Basic.