Transmettre toute information entre les applications VBA à l'aide du presse-papiers

Transmettre toute information entre les applications VBA à l'aide du presse-papiers / les fenêtres

Juste au moment où je pensais avoir fini avec mon dernier lot de conseils et astuces VBA Comment envoyer des courriers électroniques depuis une feuille de calcul Excel à l'aide de scripts VBA Comment envoyer des courriers électroniques depuis une feuille de calcul Excel à l'aide de scripts VBA Notre modèle de code vous aidera à configurer des courriers électroniques dans Excel à l'aide de CDO (Collaboration Data Objects) et de scripts VBA. En savoir plus, j'ai découvert une technique encore plus intéressante que tout le monde peut utiliser pour transmettre facilement des informations entre deux applications utilisant VBA comme langage de script back-end.

Ce qui est formidable avec VBA, c’est qu’il vous propose un grand nombre de fonctionnalités et d’outils. 3 façons d’ouvrir des applications et Windows optimisées avec VB Script [Windows] 3 façons d’ouvrir des applications & Windows optimisées avec VB Script [Windows] s’il en existe un. Ce que j'aime faire, c'est écrire des scripts VB. Qu'il s'agisse d'un fichier de script Windows ou d'un script VBA dans une application, le script permet d'ajouter des fonctionnalités aux applications… Lire la suite, qui font normalement partie des applications VB, bien que dans une version un peu plus légère..

L’un des aspects les plus frustrants de l’utilisation de VBA dans des applications spécifiques est qu’il n’est pas toujours facile d’obtenir deux applications. “parler” les uns aux autres. En effet, toutes les variables que vous utilisez ne sont accessibles que dans le cadre de l'application elle-même, et non de n'importe où ailleurs sur l'ordinateur..

Cela dit, il y a sont façons de transmettre des informations Comment intégrer des données Excel à un document Word Comment intégrer des données Excel à un document Word Au cours de votre semaine de travail, vous êtes probablement souvent confronté à des opérations de copier-coller d'informations d'Excel dans Word, ou l'inverse. autour. C’est ainsi que les gens produisent souvent des rapports écrits… Lisez davantage entre des applications basées sur VBA telles que Word ou Excel. Dans de nombreux cas, même dans un environnement professionnel, les programmeurs ont recours à la communication entre applications avec des fichiers de données. Cela peut fonctionner, mais cela introduit un élément de falsification ou d'erreur potentielle - comme la suppression ou la modification de ces fichiers - pour gâcher le travail..

Une autre approche que vous pouvez essayer pour effectuer des transactions très rapides d'informations entre applications consiste à transmettre des données au presse-papiers, puis à les lire à partir de l'autre application..

Passing Information à l'aide du Presse-papiers

Dans cet exemple, je vais vous montrer comment passer trois informations textuelles - des valeurs dans trois champs de texte - directement à une feuille de calcul Excel que la macro Word lance..

La configuration de départ est indiquée ci-dessous. C'est un document Word dans lequel je suis passé en mode Conception et j'ai créé 3 étiquettes et 3 champs de texte pour permettre à l'utilisateur de saisir des informations. En cliquant sur le “Soumettre” le bouton lancera le code de transfert de données.

Double-cliquez sur le nouveau bouton que vous avez créé en mode Création pour accéder à l'écran VB Editor. La première chose que vous allez faire est d’ajouter la référence qui vous donne accès au presse-papiers du système. Cliquez sur Outils - Références.

Faites défiler la liste des références et sélectionnez “Bibliothèque d'objets Microsoft Forms 2.0”. Une fois que vous avez cliqué sur OK, votre session d’édition VB a désormais accès aux méthodes vous permettant de lire ou d’écrire dans le presse-papiers..

C'est exactement ce que nous allons faire maintenant. Dans la fonction pour le “Soumettre” bouton, j'ai entré le code suivant.

Dim strClipText As DataObject Dim strInputText As String Dim errCode As Entier Définissez strClipText = New DataObject strInputText = ThisDocument.txtBox1.Value & ", créez-vous un article de plus PutInClipboard 'Définir objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Fichiers de programme (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MonExcelFile .xlsm ")

Vous voyez comme c'est simple? L'objet de données strClipText est l'objet Presse-papiers que vous pouvez manipuler. Commencez par lire toutes les valeurs de champ dans une seule variable de chaîne, chaque champ de données étant délimité par une virgule, ou comme vous le souhaitez..

Ensuite, vous devrez créer le fichier Excel que vous ouvrez dans la commande Shell ci-dessus. Dans Excel, vous allez vouloir ajouter la même référence à “Bibliothèque d'objets Microsoft Forms 2.0”, puis dans la fonction Workbook.Open (), vous pouvez exécuter le script suivant.

Dim msObj As MSForms.DataObject Dim strText As String Dim strResult () As String Dim intArrayCount As Integer Dim x As Integer Définissez msObj = New MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetTrext (). ) intArrayCount = Application.CountA (strResult) pour x = 0 à intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Cells (x + 1, 2) .Value = strResult (x) Suivant

Encore une fois, lorsque vous l'expliquez, il s'agit d'un script simple et très rapide. Il crée l'objet MSForms, extrait les données les plus récentes du presse-papiers et les place dans une variable chaîne. Ensuite, il divise cette variable unique et longue chaîne par le délimiteur que vous avez utilisé dans un tableau de chaînes individuelles, et finalement il parcourt le tableau (CountA vous donne la longueur du tableau) et affiche chaque valeur dans la feuille de la colonne 2..

Voici les résultats finaux.

Maintenant, avec un peu de créativité, vous pouvez utiliser cette technique pour lancer n'importe quelle application basée sur VBA et “coller” information en elle.

Vous pouvez toujours faire la même chose en utilisant la bibliothèque de référence Excel, mais dans ce cas, vous ouvriez le fichier Excel en mode silencieux et manipuliez les données qu'il contient. Dans le cas ci-dessus, vous ouvrez littéralement l'application Excel, affichez le fichier et laissez la macro de démarrage d'Excel faire le reste du travail..

Cela est particulièrement utile lorsque d’autres applications, telles que de nombreuses applications d’interface opérateur dans de nombreuses installations de fabrication, sont basées sur VBA mais ne disposent peut-être pas de ces bibliothèques pour lier étroitement les deux applications. Utiliser le presse-papier de manière automatisée comme ceci est rapide, facile et permet de faire le travail.

Essayez les scripts ci-dessus et dites-nous comment cela fonctionne sur votre système. Avez-vous eu à le peaufiner? Avez-vous des suggestions pour améliorer encore le code? Partagez vos pensées dans la section des commentaires ci-dessous.

Crédit d'image: Image de transfert de fichier via Shutterstock

En savoir plus sur: Microsoft Excel, Microsoft Word, Programmation, Tableur, Programmation Visual Basic.