2016-06-28 8 views
0

das ist, was ich habe zur Zeit,Aufruf eine geöffnete Arbeitsmappe in VBA

Dim mastertemp As Workbook 
Dim testproject As Workbook 

Set testproject = Workbooks("C:\Users\zzz\Documents\Test Project.xlsm") 
Set mastertemp = Workbooks("C:\Users\zzz\Documents\MasterTemp.xlsx") 

mastersheet.sheets("Sheet1").activate 

die dritte Codezeile mir Index von Bereich geben, irgendwelche Ideen?

Ich möchte ohne dass das System zwischen Arbeitsmappen springen können, geben Sie mir „Arbeitsmappe bereits geöffnet ist, würde verwerfen Wiedereröffnung alle Änderungen etc“

+0

Setzen Sie es auf eine Variable, dann verweisen Sie darauf. – findwindow

+0

Wenn Sie nur dies tun, können Sie versuchen, Ereignisse zu deaktivieren. An der Spitze, fügen Sie 'Application.EnableEvents = False' hinzu, dann stellen Sie das am Ende auf' True' zurück. – BruceWayne

+0

Löschen Sie die Parens, wenn Sie einen Prozeduraufruf ausführen, ohne den Rückgabewert einer Funktion zuzuweisen. sie sind überflüssig ... und sie ** werden schließlich Probleme verursachen, wenn sie eine Gewohnheit sind. –

Antwort

0

Ich würde so etwas tun:

Dim wbk as Workbook 
Set wbk = Workbooks("Test Project.xlsm") 

do stuff 
Workbooks.Open ("C:\Users\zzz\Documents\MasterTemp.xlsx") 
do stuff 

wbk.Sheets("Dashboard").Activate 
0

Wenn Sie kennen die Arbeitsmappe bereits geöffnet ist, dann es mit Namen verweisen in der Workbooks Sammlung:

Dim testProject as Workbook 
Set testProject = Workbooks("C:\Users\zzz\Documents\Test Project.xlsm") 
testProject.Sheets("Dashboard").Activate 

Wenn Sie nicht wissen, ob die Arbeitsmappe geöffnet ist, dann Sie können einige Fehlerbehandlungslogik verwenden, wie:

Dim testProject as Workbook 

On Error Resume Next 
' Attempt to index this workbook from the open Workbooks collection: 
Set testProject = Workbooks("C:\Users\zzz\Documents\Test Project.xlsm") 
If Err.Number <> 0 Then 
    ' If the above fails, then the workbook isn't open, so we need to open it: 
    Set testProject = Workbooks.Open("C:\Users\zzz\Documents\Test Project.xlsm") 
End If 
On Error GoTo 0 
+0

Immer wenn ich das Testprojekt auf den Speicherort setze, bekomme ich immer wieder einen Fehler "Skript außerhalb des Bereichs", keine Ahnung? – Qmnguy

+0

@Qmnguy Welche Zeile erhöht diesen Fehler? –

+0

Set mastertemp = Arbeitsmappen ("C: \ Benutzer \ zzz \ Documents \ MasterTemp.xlsx") – Qmnguy

0

Wenn Sie immer den Namen Ihrer Arbeitsmappe wissen Sie

workbooks("Test Project").sheets("Dashboard").Activate 'add the file extension to the name if you've turned on file extensions in windows explorer 

tun können, wenn Sie die Arbeitsmappe Namen (oder Abend, wenn es könnte zu ändern ist nicht, und Sie werden sich mehrfach auf das Arbeitsbuch beziehen), dann ist der Vorschlag von findwindow der richtige Weg.

dim TestWorkbook as workbook 
set TestWorkbook=Workbooks.Open ("C:\Users\zzz\Documents\Test Project.xlsm") 
TestWorkbook.sheets("Dashboard").activate 

Ich hoffe, das hilft.

Verwandte Themen