2016-06-30 1 views
0

Я пытаюсь извлечь данные из стандартизованной формы excel, где все значения, которые я хочу, называются Ranges. NamedRanges - спецификация рабочего листа, например. c_001 ссылается на Sheet1! $ X $ 38.Получить NamedRange из неизвестного рабочего листа в другой книге

Я попытался найти все имена в книге, например.

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

Это, похоже, не работает, возможно, поскольку все имена являются конкретными рабочими листами?

Я тогда подумал, что могу получить namne через объект Range, например. Я хочу, чтобы иметь возможность использовать что-то вроде этого, чтобы получить wsName:

tempRange.Worksheet.Name 

Мне нужно, чтобы получить Range объекта первой, хотя, но я ничего не могу думать о работах, не зная имя листа.

'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) 

ОБНОВЛЕНИЕ: Последний метод работает сейчас. Только не удалось из-за ошибок ранее в коде, который я пропустил.

+0

Вы пробовали циклически все листы, чтобы найти конкретный именованный диапазон? – RGA

+0

Каковы ошибки из вышеизложенного/ –

+0

[Коллекция имен] (https://msdn.microsoft.com/en-us/library/office/ff841251.aspx) возвращает все имена в активной книге. Можете ли вы объяснить, как это не работает? Вы получили сообщение об ошибке? Извините @Nathan_Sav; Я попытался выставить свой комментарий, но я тогда случайно его отложил. SO не позволит мне снова повыситься. –

ответ

0

В VBA вы можете также обратиться к именованным диапазонам, поместив их в квадратных скобках, как этого

Dim namedRange as Range 
Set namedRange = [rangeName] 

Или просто вызвать его методу, непосредственно ...

[rangeName].Select