Ниже мы рассмотрим программу в Excel VBA, который записывает диапазон Excel в CSV (разделенный запятыми-значение) текстовой файл.

Ситуация:

Write Data to Text File in Excel VBA

Поместите командную кнопку на листе и добавьте строки следующего кода:

  1. Во-первых, мы объявляем переменную Myfile типа String, объект под названием RNG типа Range, переменная называется CellValue типа Variant, переменная называется I типа Integer, а переменная с именем J типа Integer. Мы используем переменную Variant здесь, потому что переменная Variant может содержать значения любого типа.

Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
  1. Мы должны указать полный путь и имя файла.

myFile = Application.DefaultFilePath & "\sales.csv"

Примечание: свойство DefaultFilePath возвращает путь файла по умолчанию. Чтобы изменить местоположение файла по умолчанию, на вкладке Файл выберите команду Параметры, Сохранить.

  1. инициализирует объект диапазон ГСЧ выбранного диапазона.

Set rng = Selection
  1. Добавьте следующую строку кода:

Open myFile For Output As #1

Примечание: это утверждение позволяет файл для записи. Мы можем обратиться к файлу, как # 1 в течение остальной части кода. Если файл уже существует, то он будет удален и будет создан новый файл с таким же именем.

  1. Запустите двойную петлю.

For i = 1 To rng.Rows.Count

For j = 1 To rng.Columns.Count

Примечание: rng.Rows.Count возвращает количество строк (17 в этом примере) и rng.Columns.Count возвращает количество столбцов (4 в этом примере).

  1. Excel VBA записывает значение ячейки переменной CellValue.

cellValue = rng.Cells(i, j).Value
  1. Добавьте следующие строки кода, чтобы записать значение CellValue в текстовый файл.

If j = rng.Columns.Count Then

Write #1, cellValue

Else

Write #1, cellValue,

End If

Объяснение: из-за, если потом еще заявление, Excel VBA только начинает новую строку (запись # 1, CellValue), когда J равно числу столбцов (последнее значение в строке). Для того, чтобы отделить значения с запятой, использование записи # 1, CellValue, (с запятой).

  1. Не забудьте закрыть обе петли.

Next j

Next i
  1. Закройте файл.

Close #1
  1. Выберите данные и нажмите кнопку команды на листе.

Результат:

Write Data to Text File Result