2010-11-27 19 views
1

Je suis confronté à des problèmes de performance sur le mot VBA. J'ai une feuille d'Excel qui est touchée chaque fois que je lis une valeur d'une cellule, ce qui me permet d'avoir des temps d'exécution très longs. Existe-t-il un moyen plus efficace de lire la feuille Excel en une seule fois et de la coller dans un tableau (chaîne?) De sorte qu'un seul accès à la feuille Excel soit nécessaire? Toutes les autres opérations doivent être effectuées en accédant aux valeurs du tableau.Copier efficacement la plage d'Excel vers le tableau de mots (VBA)

Greets, poeschlorn

Répondre

1

D'après votre description, bien que je ne suis pas sûr du sens de « touché » dans votre question, je suppose que le classeur est recalculé lors de l'ouverture. Vous pouvez inhiber ce comportement en ajoutant ceci au classeur VBA:

Private Sub Workbook_Open() 
    Application.Calculation = xlCalculationManual 
End Sub 

Rappelez-vous simplement que la même chose se produira lorsque vos utilisateurs ouvrent le classeur manuellement.

HTH

0

Je ne suis pas tout à fait sûr, je comprends ce que vous voulez. Mais sur ce Microsoft Support Site est une explication de la conversion d'une gamme Excel dans un tableau. La même chose devrait être possible à partir de Word.

En bref:

Sub Sheet_Fill_Array() 
     Dim myarray As Variant 
     myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) 
     Range("a1:a10").Value = Application.WorksheetFunction.Transpose(myarray) 
    End Sub