Word VBA Макросы: как извлечь данные из excel-файла в массив

Автор Daikiny, 09 апреля 2019, 07:41

Daikiny

Помогите написать макрос, чтобы брать данные в массив из эксель-файла.

[вложение удалено администратором]

Администратор

Макрос
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