VBA Excel. Сохранение массива в текстовый файл

    Сохранение одномерного и двумерного массивов в текстовый файл с помощью кода VBA Excel и обратное заполнение массивов данными из текстового файла.

    Сохранение массива в текстовый файл

    Сохранение одномерного массива

    Сохранение одномерного массива в текстовый файл с добавлением разделителя между его элементами.

    Объявляем переменную универсального типа, создаем из нее массив, заполнив ее данными с помощью функции Array:

    Теперь создаем текстовый файл с помощью метода CreateTextFile. Создаем, а не открываем, для того, чтобы, если такой файл с данными уже существует, от был перезаписан новым пустым файлом.

    Если переменную, предназначенную для создания нового объекта TextStream объявить явно: fl As TextStream, то станут доступны подсказки для автозаполнения свойств и методов этого объекта при написании кода.

    Сохраняем информацию из массива в текстовый файл с помощью цикла For… Next:

    В качестве разделителя элементов массива используется символ «;». Если точка с запятой встречается в содержимом элементов массива, следует использовать другой разделитель.

    Закрываем объект TextStream и открываем созданный текстовый файл для просмотра:

    Полный код процедуры VBA Excel для сохранения одномерного массива в текстовый файл:

    Сохранение двумерного массива

    Сохранение двумерного массива в текстовый файл с использованием в качестве разделителей точки с запятой (для элементов в одной строке) и переноса строки.

    Раз у нас VBA Excel, то и заполнять двумерный массив будем данными с рабочего листа:

    В результате будет создан массив с размерностью (1 to 8, 1 to 4). Первое измерение массива соответствует строкам диапазона, в второе – столбцам.

    Создаем текстовый файл (или перезаписываем существующий) и открываем связанный с ним объект TextStream для записи данных из массива:

    Записываем данные из двумерного массива в текстовый файл:

    Закрываем объект TextStream и открываем созданный текстовый файл для просмотра:

    Полный код процедуры VBA Excel для сохранения двумерного массива в текстовый файл:

    Заполнение массива из текстового файла

    Заполнение одномерного массива

    Обратное заполнение с помощью кода VBA Excel одномерного массива данными из созданного текстового файла "C:\test\testfile1.txt":

    Заполнение двумерного массива

    Обратное заполнение с помощью кода VBA Excel двумерного массива из созданного текстового файла "C:\test\testfile2.txt".

    Копируем информацию из текстового файла в переменную myString1:

    Что мы теперь имеем? Все данные из файла "C:\test\testfile2.txt" скопированы в переменную myString1 с исходной структурой: со знаком переноса строки в качестве разделителя строк и точкой с запятой в качестве разделителя столбцов. Этой информацией мы и воспользуемся для заполнения массива myArray().

    Проверяем заполненный массив копированием данных из него на рабочий лист:

    Полный код процедуры VBA Excel для обратного заполнения двумерного массива из текстового файла:

    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    2 комментария для “VBA Excel. Сохранение массива в текстовый файл”

    1. Николай

      Добрый день, Евгений!
      Подскажите пожалуйста, как сохранить массив в файл через вызов FileDialog, чтобы можно было назначить произвольное имя и выбрать нужную директорию?

      Диалог открывается, но создать файл и записать туда массив не получается.
      Заранее спасибо!

      1. Евгений

        Здравствуйте, Николай!
        Метод Application.GetSaveAsFilename создает только имя файла, но не создает и не сохраняет файл, в том числе при нажатии кнопки «Сохранить». Для создания файла и заполнения его данными необходим отдельный код, использующий полное имя, записанное в переменную Path.

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.