2010-09-03 8 views
0

J'essaie de remplir une feuille de calcul Excel en utilisant VBA (est en fait quelque chose de différent en utilisant un serveur COM, mais c'est la même syntaxe). C'est un rapport généré que je veux écrire dans Excel pour le formatage et la présentation. Les exportations de CSV et d'autres techniques sont hors de l'équation en raison de la technologie impliquée. Donc, je suis capable de le faire en écrivant chaque valeur dans chaque cellule, mais il est douloureusement lent, donc, j'ai décidé que je pourrais écrire un tas de valeurs à la fois (disons 250 enregistrements à chaque fois). Donc, je stocke ces valeurs délimitées par un retour chariot et si je copier/coller cela en utilisant VBA cela fonctionne parfaitement. Le problème est que je ne peux pas utiliser le presse-papier (le rapport est exécuté plusieurs fois simultanément). Est-ce que je peux simuler l'action de collage (ou quelque chose de similaire) d'une liste de valeurs dans Excel sans utiliser le presse-papier?Simuler l'action de collage dans Excel en utilisant vba

Merci,

Répondre

1

Le meilleur moyen de copier les valeurs dans VBA que je connais est

Range("destrange") = Range("srcrange") 

destrange et srcrange doivent être de la même taille. De plus, aucune donnée de formatage, etc., ne sera copiée.

edit: voici quelque chose qui pourrait être usefull.

+0

Salut, je ne pouvais pas utiliser copier une plage, mais le spectacle de lien plusieurs options, l'importation de fichiers texte était le moyen de va dans mon cas. Thx – pedromarce

1

Vous pouvez créer un tableau de Variant s et l'affecter à une gamme:

Dim v() As Variant 

    ReDim v(1 To 20, 1 To 10) 
    'Fill v 
    v(5, 5) = 42 
    '... 

    Range("a1:j20").Value = v 
+0

C'est une très bonne option, mais dans mon environnement je ne pouvais pas définir une variable Variant. – pedromarce

Questions connexes