2016-07-15 4 views
0

Ich glaube, ich habe ein unqualifiziertes Referenzproblem mit dem Code unten, basierend auf dem, was ich gelesen habe. Ich denke, was ich tun muss, ist das Arbeitsbuch speziell zu referenzieren, aber ich habe eine Reihe von Möglichkeiten ausprobiert, alles erfolglos. Kann jemand helfen?Laufzeitfehler '1004' Methode 'Arbeitsblätter' des Objekts '_Global' fehlgeschlagen

Dim f As FileDialog, str As String 
Set f = Application.FileDialog(msoFileDialogFilePicker) 
f.Show 
str = f.SelectedItems(1) 

Dim xl As Excel.Application 
Set xl = New Excel.Application 
xl.Visible = True 
xl.Workbooks.Open (str) 

Dim wsT As Worksheet, wsA As Worksheet, wsE As Worksheet, wsI As Worksheet, lr As Long, lrow As Long 

Worksheets.Add(After:=Worksheets(1)).Name = "TABLE" 

Set wsA = Worksheets("ACTIVE") 
Set wsT = Worksheets("TABLE") 

Ein Beispiel dessen, was ich versucht habe, war

Set wb = xl.workbooks.open(str) 

Vielen Dank!

Antwort

1

Sie waren fast da. Definieren Sie zuerst die Variablen.

Dim xl As Excel.Application 
Set xl = New Excel.Application 
xl.Visible = True 

Dim xlWB as Excel.Workbook '** added this line 
Set xlWB = xl.Workbooks.Open(str) 

Rest der Code sieht auf den ersten Blick

+0

Dank gut. Ich habe den Code aktualisiert und dann xlWB.Worksheets.Add hinzugefügt (After: = Worksheets (1)). Name = "TABLE", aber ich bekomme immer noch den Laufzeitfehler. Irgendeine Idee warum? – Chris2015

+1

'xlWB.Worksheets.Add (Nach: = xlWB.Worksheets (1)). Name =" TABLE "' Wenn Sie Excel von einer anderen Anwendung automatisieren, müssen Sie sicher sein, dass alles, was die Excel-Instanz "besitzt". –

+0

Danke Tim! Ich habe alles qualifiziert und es funktioniert. Bin dankbar. – Chris2015