2009-11-08 6 views
0

Dans mon classeur, je copie la feuille actuelle pour la conserver comme enregistrement d'une vente. Finalement, le classeur se remplit de ventes et à un certain point jette une erreur quand j'essaye de copier une autre feuille. Après avoir enregistré, puis complètement quitter Excel, puis recharger le fichier, je peux continuer sans problèmes. Je suppose que c'est un problème de mémoire, mais je ne suis pas sûr de savoir comment le résoudre sans redémarrer Excel. Je ne peux pas me souvenir exactement du libellé de l'erreur, mais cela va dans le sens de "Echec de la méthode de copie de la feuille de calcul". FWIW J'utilise "Application.CutCopyMode = False" à la fin de la macro qui copie la feuille.Echec de la méthode de copie en raison de la mémoire

1ère édition:
Je souhaite publier tout le code, mais il y en a tellement (la plupart ne sont pas liés à la mise à jour des valeurs, à la vérification des entrées, etc.); Si je poste tout, je devrais afficher toutes les autres fonctions pour que cela ait un sens. Qu'il suffise de dire, voici ce que je pense est applicable:

ActiveSheet.Copy After:=Sheets(3) 
...(more code)... 
Call resetInterface(True, True, (wasScreenUpdating), (wasProtected)) 

et pour la fonction « resetInterface »:

' Final operations for a typical function/sub ' 
Function resetInterface(Optional calc As Boolean = False, Optional ccmode As Boolean = False, Optional scrUpdate As Boolean = True, Optional protectWS As Boolean = False) 
    With Application 
     If calc Then 
      .Calculation = xlCalculationAutomatic 
      .Calculate 
     End If 
     If ccmode Then .CutCopyMode = False 
     .ScreenUpdating = scrUpdate 
    End With 
    If protectWS Then ActiveSheet.Protect 
End Function 
+0

Quelques conseils (pour attirer du trafic vers votre question et peut-être obtenir résolu): a) Titre: utiliser « Excel Macro » ou un mot-clé similaire. b) faites l'effort de prendre note du message spécifique (et en effet, peut-être "google" ce message vous-même) c) peut-être fournir un extrait plus long de votre macro. – mjv

Répondre

1

Lors de la copie de feuilles dans Excel, la propriété CodeName de l'objet Worksheet posait problème lors de l'ajout d'un 1 et devenait trop longue. Je pense que cela a été corrigé, mais cela dépend de la version que vous utilisez.

Ouvrez le VBA (Alt + F11) et affichez l'Explorateur de projet (Ctl + R). Regardez les noms de code de vos feuilles copiées. Sont-ils Sheet1, Sheet2, etc.? Ou sont-ils Sheet1, Sheet11, Sheet111, etc ...? Si ce dernier, cela peut être à l'origine du problème. Voir http://support.microsoft.com/kb/177634

Ou peut-être que vous avez un nom de niveau de classeur, voir http://support.microsoft.com/?kbid=210684

+0

J'utilise Excel 2003, et je n'ai vu aucun "Sheet1111". On dirait que l'article de support ms décrit ce qui se passe. Solution de contournement Crappy si: | – JakeTheSnake

+0

D'accord sur la solution de contournement. J'étais un peu surpris qu'un correctif n'ait pas été publié. Je suis content que vous l'ayez trié de toute façon. –

0

L'erreur que vous faites référence est: Excel VB erreur d'exécution 1004: "La méthode de copie de la classe Worksheet a échoué"

Pouvez-vous publier la macro que vous avez écrite?

Questions connexes