#arrays #vba #excel
#массивы #vba #excel
Вопрос:
Как мне определить массив как столбец в файле, имя файла которого определено в ячейке? Я определил имя для этих ячеек на рабочем листе, над которым я работаю, и мне также интересно, как использовать это в коде VBA.
Комментарии:
1. Пожалуйста, примите решение. Вы хотите использовать VBA или нет? Кроме того, открытие файла, имя которого находится в ячейке, не может быть выполнено без VBA.
2. Мне нужно определить массив в VBA, который я буду использовать позже в коде
3. Что здесь непонятно?
4. Вы просто пытаетесь определить имя диапазона, указывающее на другую книгу? Или вы пытаетесь получить значения из столбца в другой книге? В принципе, логически невозможно (AFAIK) получить содержимое файла без «открытия» файла, но если вы просто пытаетесь избежать открытия рабочей книги в Excel , вы можете использовать ADODB для выполнения SQL-запроса к данным.
5. Я все еще не уверен, как указать код на файл в именованной ячейке и выбрать столбец данных в этом файле для сохранения в виде массива
Ответ №1:
вы могли бы использовать что-то вроде этого:
Option Explicit
Sub main()
Dim cell As Range
Dim columnArr As Variant
For Each cell In Worksheets("MySheet").Range("WsNames").SpecialCells(xlCellTypeConstants) '<-- loop through your named range not blank cells
With Workbooks.Open(cell.Value).Worksheets(1) '<-- open workbook after current cell and reference its first worksheet
columnArr = Application.Transpose(.Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Value) '<-- store referenced worksheet column "A" values down to last not empty cell
End Witho
ActiveWorkbook.Close False '<-- close opened workbook
' your code
Next cell
End Sub
измените «mySheet» и «WsNames» на ваш фактический рабочий лист и именованные имена диапазонов