Copier VBA dans le presse-papiers

Cet article explique comment utiliser VBA pour copier des éléments dans le Presse-papiers.

Il peut arriver que nous souhaitions copier des informations dans Excel VBA et les stocker pour les utiliser dans une autre application ou à un autre moment lorsque la macro Excel a cessé de s'exécuter. Une fois qu'une macro cesse de s'exécuter, les informations stockées dans une ou plusieurs variables cessent d'exister et ne peuvent plus être récupérées. Une façon de résoudre ce problème serait de copier ces informations dans le presse-papiers.

Copie dans le presse-papiers à l'aide de la bibliothèque d'objets HTML

La façon la plus simple d'utiliser le presse-papiers dans Excel VBA consiste à appeler la bibliothèque d'objets HTML.

1234567 Sous-StoreData()Dim varText en tant que varianteDim objCP en tant qu'objetvarText = "Du texte copié"Définir objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "texte", varTextFin du sous-marin

Comme nous utilisons la liaison tardive en déclarant la variable objCP en tant qu'objet, nous n'avons pas besoin d'ajouter une référence à Excel pour que cette procédure fonctionne.

Si nous devions maintenant passer à notre feuille de calcul Excel et cliquer sur Coller, le texte « Certaines données copiées » serait inséré dans la cellule sélectionnée.

Si nous devions changer cette procédure ci-dessus en fonction, nous pourrions passer le texte à copier en tant que variable.

12345 Fonction StoreData (varText en tant que variante) en tant que chaîneDim objCP en tant qu'objetDéfinir objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "texte", varTextFonction de fin

Nous pourrions ensuite appeler cette fonction plusieurs fois dans notre code VBA au fur et à mesure que nous devons copier du texte dans le presse-papiers. Le texte ne serait donc pas codé en dur dans le code VBA.

123 Sous-CopieDonnées()StoreData "Du texte copié"Fin du sous-marin

Nous pouvons également utiliser l'objet HTML pour renvoyer le texte du presse-papiers - c'est-à-dire coller. Pour cela, nous utilisons la méthode GetData plutôt que la méthode SetData.

12345 Fonction ReturnData()Dim objCP en tant qu'objetDéfinir objCP = CreateObject("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData("text")Fonction de fin

Nous pouvons alors appeler cette fonction pour retourner les données stockées dans le presse-papiers.

123 Sous-collerDonnées()MsgBox ReturnDataFin du sous-marin

Une astuce intéressante consisterait à combiner les 2 fonctions afin que nous puissions utiliser la même fonction pour copier et coller des données, selon que nous envoyons ou non des données au presse-papiers, ou si nous souhaitons récupérer des données du presse-papiers.

1234567891011 Fonction StoreOrReturnData (option StrText As String) As StringDim varText en tant que varianteDim objCP en tant qu'objetDéfinir objCP = CreateObject("HtmlFile")varText = strTextSi strText "" AlorsobjCP.ParentWindow.ClipboardData.SetData "texte", varTextAutreStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("text")Fin siFonction de fin

Dans le code ci-dessus, nous pouvons rendre la variable strText facultative - cela signifie que si nous souhaitons copier des données, nous inclurons le texte à copier, mais si nous souhaitons coller des données, nous l'exclurons.

Nous allons ensuite affecter la variable chaîne (strText) à une variable Variant afin qu'elle soit stockée dans la méthode SetData de l'objet fichier HTML.

Pour copier les données, nous pouvons utiliser cette procédure, notez que nous incluons le texte à copier.

123 Sous-CopieDonnées()StoreOrReturnData "SomeCopiedText"Fin du sous-marin

Pour coller les données, nous pouvons utiliser cette procédure. La boîte de message affichera la valeur stockée dans le presse-papiers.

123 Sous-collerDonnées()MsgBox StoreOrReturnDataFin du sous-marin

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave