web-dev-qa-db-fra.com

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

Comment activer mon classeur Autre à partir du classeur Actuel? J'ai un classeur en cours avec dumb.xls et l'autre nom du classeur, Tire.xls.J'ai ouvert le fichier Tire.xls à partir du fichier dumb.xls à l'aide de worksbooks.open filename:= "name of the file". Son ouverture, mais le problème est incapable de le faire fonctionner.

Si je dis cells(2,24).value=24 met ces valeurs dans la cellule de dumb.xls mais je veux que ce soit fait un Tire.xls.

activesheet.cells(2,24).value=24 les met sur Tire.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 

J'ai trouvé ce code sur google

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

Ce n'est pas activé. Je ne sais pas comment le faire fonctionner. Quelqu'un peut-il me dire comment activer un classeur spécifique et une feuille spécifique de l'autre classeur?

Exemple: J'ai niko.xls et niko_2.xls ouverts en tant que classeurs à partir du classeur dumb.xls, donc 3 classeurs au total et je dois activer la deuxième feuille du classeur niko_2.xls.Comment le créer? Quelqu'un peut-il m'expliquer la syntaxe avec ces exemples? Merci d'avance

6
niko

Vous n'avez pas besoin d'activer la feuille (vous aurez réellement besoin de beaucoup de performance pour le faire). Puisque vous déclarez un objet pour la feuille, vous appelez la méthode commençant par "wb". vous sélectionnez cet objet. Par exemple, vous pouvez passer d’un classeur à l’autre sans activer quoi que ce soit comme 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
14
aevanko

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

Dim wkb As Workbook
Set wkb = Workbooks.Open("Tire.xls") ' open workbook and set reference!

wkb.Sheets("Sheet1").Activate
wkb.Sheets("Sheet1").Cells(2, 1).Value = 123

Pourrait même définir une référence à la feuille, ce qui facilitera la vie plus tard:

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

D'autres ont souligné que .Activate peut être superflu dans votre cas. Il n'est pas strictement nécessaire d'activer une feuille avant de modifier ses cellules. Mais, si c'est ce que vous voulez faire, l'activation ne présente pas de danger, à l'exception d'un petit coup pour une performance qui ne devrait pas être perceptible tant que vous ne le faites qu'une ou plusieurs fois. Cependant, si vous activez plusieurs fois, par exemple, dans une boucle, cela ralentira considérablement les choses, donc l'activation doit être évitée. 

4

essaye ça 

Windows("name.xls").Activate
0
MNS

Vous pouvez essayer ça.

Workbooks("Tire.xls").Activate

ThisWorkbook.Sheets("Sheet1").Select
Cells(2,24).value=24
0
Kai

Le code qui a fonctionné pour moi est:

ThisWorkbook.Sheets("sheetName").Activate
0
Jonia
Dim Wb As Excel.Workbook
Set Wb = Workbooks.Open(file_path)
Wb.Sheets("Sheet1").Cells(2,24).Value = 24
Wb.Close

Pour connaître le nom des feuilles à référencer dans Wb.Sheets("sheetname"), vous pouvez utiliser les éléments suivants:

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