Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2014, 03:57   #1
Kefirrr
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 53
По умолчанию Макрос. Вывод в текстовый документ

Добрый день, форумчане. Может подскажите как написать макрос, чтобы данные из xls-файла записывались в txt-файл, но определенным способом.
К примеру есть файл, где указаны фамилия и сумма долга а нужно чтобы на печать выводился подзаголовок Должники: "ноябрь 2013"
Ниже (именно через 2 строчки) выводятся данные в таком виде:
Фамилия: иванов
Долг:5
Работа:
Адрес:

(именно с пустыми данными). Затем спустя еще определенное кол-во строк выводились данные по второму человеку и т.д. до конца документа.
Вложения
Тип файла: zip primer.zip (8.6 Кб, 14 просмотров)
Kefirrr вне форума Ответить с цитированием
Старый 26.04.2014, 21:57   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Файл сохраняется в папку с xls
Код:
Sub Kefirrr()
Const STR_AFTER = 2 'число пустых строк после записи
Const B$ = vbCrLf
Dim i&, f%, v()
f = FreeFile
v = Range("A2", Cells(Rows.Count, "B").End(xlUp)).Value
Open ActiveWorkbook.Path & "\Итог.txt" For Output As f
Print #f, "Должники: ""ноябрь 2013""" & B & B
For i = 1 To UBound(v)
  Print #f, "Фамилия: " & v(i, 1)
  Print #f, "Долг:" & v(i, 2)
  Print #f, "Работа:" & B & "Адрес:" & B & Application.Rept(B, STR_AFTER - 1)
Next
Close f
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 27.04.2014, 23:23   #3
Kefirrr
Пользователь
 
Регистрация: 05.06.2010
Сообщений: 53
По умолчанию

Все работает. Огромное спасибо. Только можете разъяснить значение строчки:
v = Range("A2", Cells(Rows.Count, "B").End(xlUp)).Value.
Я так понимаю, что переменной присваивается значение ячеек A и B в определенной строке, а дальше просто выводим необходимое.

Так же огромное спасибо за функцию STR_AFTER.
Kefirrr вне форума Ответить с цитированием
Старый 28.04.2014, 00:10   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от Kefirrr Посмотреть сообщение
можете разъяснить значение строчки
Переменной v присваивается массив значений ячеек от А2 до последней в ст. В. Далее данные берутся из массива, к ячейкам обращений уже нет.
4-ю с конца строку лучше написать так:
Код:
  Print #f, "Работа:" & B & "Адрес:" & Application.Rept(B, STR_AFTER)
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 28.04.2014 в 01:35.
Казанский вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод Мемо в текстовый документ Roomaa Общие вопросы Delphi 12 17.05.2012 23:39
как вывести в текстовый документ? stdio Помощь студентам 17 25.02.2012 12:46
Delphi. Сохранение в текстовый документ. Волчица Помощь студентам 5 29.04.2010 01:44
Как откомпилировать текстовый документ Vitalyir84 Общие вопросы Delphi 9 15.02.2010 23:07
имена файлов в текстовый документ Mobile™ Операционные системы общие вопросы 7 02.11.2009 23:41