2016-06-30 11 views
0

Ich versuche, Daten aus einem standardisierten Excel-Formular zu extrahieren, wo alle Werte, die ich will, benannt sindRanges. Die NamedRanges sind Arbeitsblattspezifikationen, z. c_001 verweist auf Tabelle1! $ X $ 38.Bekommen NamedRange von unbekannten Arbeitsblatt in anderen Arbeitsmappe

Ich habe versucht, alle Namen in der Arbeitsmappe abzurufen, z.

'Runtime error 13 - Type mismatch 
Set namesInWb = Workbooks(wbName).Names 

Dies scheint nicht, obwohl zu arbeiten, möglicherweise da alle Namen bestimmte Arbeitsblatt sind?

Ich dachte dann, ich könnte die namne durch das Objekt Range, z. Ich möchte in der Lage sein, so etwas zu verwenden, um die wsname zu bekommen:

tempRange.Worksheet.Name 

Ich brauche das Range-Objekt zwar zuerst abgerufen werden, aber nichts kann ich von Arbeiten denken, ohne das Arbeitsblatt Namen zu kennen.

'Not working - Runtime error 438 - Object does not support this property or method 
Set tempRange = Workbooks(wbName).Range("c_001") 


'This works now, only failed due to another error earlier in the code that I had missed 
Set tempRange = Range(currentName) 

UPDATE: Letzte Methode funktioniert jetzt. Nur fehlgeschlagen aufgrund von Fehlern früher in dem Code, den ich verpasst hatte.

+0

Haben Sie versucht, Schleifen alle Blätter, um den spezifischen benannten Bereich zu finden? – RGA

+0

Was sind die Fehler von oben/ –

+0

Die [Names-Auflistung] (https://msdn.microsoft.com/en-us/library/office/ff841251.aspx) gibt alle Namen im aktiven Buch zurück. Kannst du erklären, auf welche Art das nicht funktioniert? Erhalten Sie eine Fehlermeldung? Sorry @Nathan_Sav; Ich habe versucht, deinen Kommentar zu verbessern, aber ich habe ihn dann versehentlich abgelehnt. SO lässt mich nicht mehr up-vote. –

Antwort

0

In VBA können Sie auch, indem sie in eckigen Klammern wie diese

Dim namedRange as Range 
Set namedRange = [rangeName] 

auf benannte Bereiche beziehen oder einfach direkt seine Methoden aufrufen ...

[rangeName].Select