8
votes

Comment activer un classeur spécifique et une feuille spécifique?

Comment puis-je activer mon autre classeur depuis le classeur actuel? J'ai un classeur actuel avec Dumb.xls et l'autre nom de classeur en tant que TIRE.XLS.I ont ouvert les TIRE.XLS.JI auprès de TIRE.XLS à partir de Dumb.xls à l'aide de Workbooks.open FileName: = "Nom du fichier" code " > Je veux que cela soit fait un pire.xls. P>

ActiveHeet.cells (2,24) .Value = 24 code> les met sur pren.xls. Mais comment puis-je activer le classeur avec le nom? Je dois ouvrir 3 à 4 classeurs Excel et effectuer l'opération? Comment activer le classeur spécifique P>

J'ai trouvé ce code sur Google P>

     activeworkbook.worksheet("sheetname").activate  ' but not working
     windows("sheetname").activate ' people on google suggested not to use


0 commentaires

6 Réponses :


0
votes
Dim sht as Worksheet    
For Each sht In tempWB.Sheets
    Debug.Print sht.Name
Next sht

1 commentaires

Désolé mais laissez-moi savoir comment puis-je activer une feuille? Vos poser des valeurs dans ce cas, je veux faire tout le tri et les opérations dans ce classeur que de le fermer? Devrais-je avoir besoin de toujours indiquer wb.sheets ("feuille1") ...... laissez-moi le savoir?



18
votes

Vous n'avez pas besoin d'activer la feuille (vous prendrez une énorme performance pour le faire, réellement). Puisque vous déclarez un objet pour la feuille, lorsque vous appelez la méthode commençant par "WB". Vous sélectionnez cet objet. Par exemple, vous pouvez entrer entre des classeurs sans rien activer ici:

Sub Test()

Dim wb1 As Excel.Workbook
Set wb1 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test1.xls")
Dim wb2 As Excel.Workbook
Set wb2 = Workbooks.Open("C:\Documents and Settings\xxxx\Desktop\test2.xls")

wb1.Sheets("Sheet1").Cells(1, 1).Value = 24
wb2.Sheets("Sheet1").Cells(1, 1).Value = 24
wb1.Sheets("Sheet1").Cells(2, 1).Value = 54

End Sub


2 commentaires

Quelqu'un a eu un indice pourquoi ce qui précède me donnerait une erreur "erreur compilée - caractère invalide" sur copie / colle?


Pas certain. J'utilise un clavier japonais de sorte qui sait, peut-être que la barre oblique inverse ou quelque chose a un code de caractère différent. Essayez de coller dans un fichier txt puis excellez peut-être? J'ai remarqué un "" caractère "sous Sous-test () alors je l'ai supprimé au cas où c'était le cas.



5
votes

Vous devez définir une référence au classeur que vous ouvrez. Ensuite, vous pouvez faire tout ce que vous voulez avec ce classeur en utilisant sa référence.

Dim wkb As Workbook
Dim sht As Worksheet

Set wkb = Workbooks.Open("Tire.xls")
Set sht = wkb.Sheets("Sheet2")

sht.Activate
sht.Cells(2, 1) = 123


6 commentaires

Activer, comme Select Select, prend énormément de péage sur la performance. Par exemple, boucle la procédure ci-dessus 10 000 fois et avec activer cela prend environ 8 secondes. Sans cette ligne, cela ne prend que 0,375 secondes. Bien sûr, les résultats diffèrent par la machine.


Je vais admettre que j'ai été surpris de trouver la différence énorme d'éviter de sélectionner et d'activer. Voici quelques réfères (mentions qui activent prennent un coup sur la performance): MSDN.MicRosoft .Com / fr-US / Bibliothèque / FF726673.aspx


Ouais, bon point, bien que si la op ne boucle pas, il ne sera pas perceptible. Je vais ajouter une remarque à cet effet dans ma réponse.


Vous avez raison, sauf si vous utilisiez beaucoup d'activer beaucoup, vous ne remarqueriez pas la différence (c'est toujours bon à savoir, imo). Becuase j'aime les résultats exagéré, j'ai essayé de boucler 1 million de fois. Sans .ACTIVER Il a fallu 35 secondes, avec elle, il a fallu 13 minutes! : p


UM, qui vient de multiplier vos résultats précédents de 100, comme on pouvait s'y attendre!


Aha! N'a pas réalisé que et garçon, je me sens un peu stupide maintenant quand j'y pense!



0
votes

Le code qui a fonctionné pour moi est le suivant:

ThisWorkbook.Sheets("sheetName").Activate


1 commentaires

J'ai essayé toutes les méthodes mentionnées ici pour sélectionner une feuille de calcul (passer d'une feuille de calcul à une autre, en fait.) Cependant, je reçois une "application ou une erreur définie d'objet". La feuille de calcul existe (j'ai ajouté un code pour vérifier cela via une msgbox.) Veuillez vous plaire.



0
votes

Essayez ceci xxx


1 commentaires

Vous devez expliquer pourquoi votre réponse est utile de plus de 2,5 ans. L'avez-vous testé, en ce qui concerne l'autre réponse?



2
votes

Vous pouvez essayer cela. XXX


0 commentaires