Помогите написать макрос, чтобы брать данные в массив из эксель-файла.
[вложение удалено администратором]
Макрос
Sub Макрос()
Dim phrases()
' Запись искомых фраз из эксель-файла в массив 'phrases'.
GetSearchPhrases phrases()
' Здесь у вас массив 'phrases' с искомыми словами.
' Массив двумерный: состоит из нескольких строк и одного столбца.
' Чтобы извлечь первый элемент: phrases(1,1), чтобы извлечь второй элемент: phrases(2,1) и т.д.
End Sub
Private Sub GetSearchPhrases(phrases())
' Запись искомых фраз из эксель-файла в массив 'phrases'.
Dim ex As Object, bk As Object, sh As Object
Dim FN As String, lr As Long
'1. Запуск экселя.
Set ex = CreateObject(Class:="Excel.Application")
'2. Открытие эксель-файла. Файлу присваиваем имя 'bk' и далее в коде
' можно обращаться к файлу по этому имени.
' Файл открывается только для чтения, т.к. нам надо только извлечь данные,
' а записывать данные не надо. Это позволит избежать конфликта, если файл кем-то открыт.
' В переменной 'FN' укажите полное имя (путь + имя) эксель-файла.
FN = "C:\Users\User\Desktop\Искомые фразы.xlsb"
Set bk = ex.Workbooks.Open(FileName:=FN, ReadOnly:=True)
'3. Даём имя 'sh' листу, из которого надо извлечь данные.
' Далее в макросе будем обращаться к листу по этому имени.
Set sh = bk.Worksheets("Фразы")
'4. Поиск последней строки в столбце A.
' End не ищет в скрытых строках.
lr = sh.Cells(sh.Rows.Count, "A").End(-4162).Row
'5. Копирование данных из столбца A со второй строки до последней в массив.
phrases() = sh.Range("A2:A" & lr).Value
'6. Закрытие файла и экселя.
bk.Close SaveChanges:=False
ex.Quit
End Sub
В самый верх модуля вставьте это. Я делал макрос, при этих настройках:
Option Explicit
Option Compare Text
Option Base 1