web-dev-qa-db-de.com

Wie aktiviere ich eine bestimmte Arbeitsmappe und ein bestimmtes Blatt?

Wie aktiviere ich meine Andere Arbeitsmappe aus der aktuellen Arbeitsmappe? Ich habe eine aktuelle Arbeitsmappe mit dumb.xls und dem anderen Arbeitsmappennamen als Tire.xls.Ich habe die Tire.xls aus der dumb.xls mit worksbooks.open filename:= "name of the file" geöffnet.

Wenn ich cells(2,24).value=24 sage, werden diese Werte in die Zelle von dumb.xls eingefügt, aber ich möchte, dass eine Tire.xls erstellt wird.

activesheet.cells(2,24).value=24 setzt diese auf Tire.xls. Aber wie aktiviere ich die Arbeitsmappe mit dem Namen? Ich muss 3 bis 4 Excel-Arbeitsmappen öffnen und den Vorgang ausführen? Wie aktiviere ich die Arbeitsmappe? 

Ich habe diesen Code bei Google gefunden

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

Es wird nicht aktiviert. Ich weiß nicht, wie es funktioniert. Kann mir jemand sagen Wie aktiviere ich eine bestimmte Arbeitsmappe und ein bestimmtes Blatt der anderen Arbeitsmappe?

Beispiel: Ich habe niko.xls und niko_2.xls als Arbeitsmappen aus der dumb.xls-Arbeitsmappe geöffnet, also insgesamt 3 Arbeitsmappen und ich muss das 2. Blatt der niko_2.xls-Arbeitsmappe aktivieren. Wie mache ich es? Kann mir jemand mit diesem Beispiel die Syntax erklären? Danke im Voraus

6
niko

Sie müssen das Arbeitsblatt nicht aktivieren (dafür ist ein großer Performance-Treffer erforderlich). Da Sie ein Objekt für das Blatt deklarieren, wird beim Aufruf der Methode mit "wb" begonnen. Sie wählen dieses Objekt aus. Beispielsweise können Sie zwischen Arbeitsmappen springen, ohne etwas wie hier zu aktivieren:

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

Sie müssen einen Verweis auf die Arbeitsmappe setzen, die Sie öffnen. Anschließend können Sie mit dieser Arbeitsmappe alles tun, was Sie möchten.

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

Könnte sogar einen Verweis auf das Blatt setzen, was das Leben später erleichtern wird:

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

Andere haben darauf hingewiesen, dass .Activate in Ihrem Fall überflüssig sein kann. Sie müssen ein Blatt nicht unbedingt aktivieren, bevor Sie die Zellen bearbeiten. Wenn Sie dies jedoch tun möchten, schadet die Aktivierung nicht - mit Ausnahme eines kleinen Erfolgs, der nicht auffallen sollte, solange Sie ihn nur einmal oder ein paar Mal ausführen. Wenn Sie jedoch viele Male aktivieren, z. In einer Schleife verlangsamt es die Dinge erheblich. Daher sollte die Aktivierung vermieden werden. 

versuche dies 

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

Sie können es versuchen.

Workbooks("Tire.xls").Activate

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

Der Code, der für mich funktioniert hat, ist:

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

Um den Namen der Arbeitsblätter in Wb.Sheets("sheetname") zu kennen, können Sie Folgendes verwenden:

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