Новичок в VBA, я хочу определить массив как столбец в другом файле

#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» на ваш фактический рабочий лист и именованные имена диапазонов