Макрос створення текстових файлів по таблиці excel, макроси для excel

Вихідними даними є таблиця Excel з 12 стовпців.

Спочатку, макрос створює папку для майбутніх текстових файлів.
Папка створюється в тому ж каталозі, де розташована книга Excel.

Далі, для кожного рядка таблиці, макрос формує підпапку,
використовуючи в якості її назви текст з 7-го стовпчика таблиці.

І потім, коли папка для файлу створена, макрос створює текстовий файл з вмістом з 10 шпальти таблиці,
і зберігає його під ім'ям, узятим з другого шпальти тієї ж таблиці Excel.
Після створення файлу, у нього змінюється кодування на UTF-8 (спочатку, при створенні, файли мають кодування Unicode)

Після закінчення роботи макросу, відкривається папка, що містить створені текстові файли.

Приклад макросу дивіться в прикріпленому файлі.

Код макросу, що створює папки, підпапки, і текстові файли за даними з таблиці Excel:

Підкажіть, а міг би макрос формувати файли з даними не з одного рядка Excel, а з декількох спираючись на загальний ознака, наприклад по групах? Наприклад: є група чай і в неї входять поля з чотирьох рядків Excel, потрібно щоб всі вони були присутні в одному файлі і над ними першим рядком була б шапка "Шапка + назва групи". Файл Excelя буде відсортований за цією ознакою, в ньому не буде більше 500 рядків.
приклад:
"Шапка чай"
супер чай для всіх
супер пупер чай для кожного
швидкий чай
не надто швидкий чай

можливо невірно висловився. я все експериментував з Filename $ = Folder $ Trim (arr (i, 2)) ".txt"
для того, щоб з шпальти і унікальною осередку виходило з номером. Тобто маючи дані стовпці: товар А, товар Б, товар В отримувати на виході файли типу: 1.Товар А, 2.Товар Б, 3.Товар В
як таке провернути?
буду вдячний за відповідь)

спасибі за бажання допомогти, але боюся, що це щось не те
якщо я правильно все розумію, то наведений вами код складається з 2 частин:

1. макрос, який якщо його запустити у відкритому в Excel файлі .csv перекодовує даний файл в utf-8 без BOM. Не знаю чому, але у мене він не працює.

Роблю рівно наступне - є простенька таблиця в Excel, зберігаю її як .csv, запускаю макрос, файл закривається. Якщо його після цього відкривати хоч Excel хоч Notepad ++, то там абракадабра в одну строчку, при цьому Notepad ++ як показував в оригінальному файлі кодування ANSI, так і показує його в новому файлі.

2. функція, яка перекодовує заданий .csv в потрібне кодування. Тобто припустимо можна зберегти свою таблицю Excel в .csv, вказати шлях до даного файлу на диску і функція поміняє кодування даного файлу

по-перше, незрозуміло що вказувати в аргументі SourceCharset
по-друге, якщо SourceCharset НЕ указиавать, то виходить абракадабра в одну строчку як в разі вище, хоча тут вже Notepad ++ погоджується, що кодування стала utf-8 без BOM
по-третє, початкова задача звучала зовсім по-іншому, а саме

"Є табличка Excel в форматі, припустимо .xlsx. При натисканні на макрос, він зберігає цю табличку в тій же папці, але в форматі .csv, причому .csv цей в кодуванні utf-8 без BOM" (власне, можливість вказати кодування при збереженні .csv є в OpenOffice Calc, але улюблений Excel чомусь не може собі це дозволити.)

в загальному, думаю, якщо вийде реалізувати варіант як в OpenOffice Calc або варіант простіше, тобто без вибору папки для збереження (можна окрему статтю цього присвятити, до речі), то приплив додаткових відвідувачів з нужденних вебмайстрів до вас на сайт забезпечений. А сайт, до речі, дуже крутий, прям не віриться, що він російського походження.

Привіт, Василь.
Макрос і кнопка при всьому бажанні в CSV не будуть збережені, - CSV це текстовий формат.

Макрос можна спростити, - якщо зберігати весь файл в CSV
Якщо ви вручну зберегли файл у форматі CSV, - в макросі досить буде 3 рядків:
(Сам макрос можна зберегти в особистому книзі макросів, і запускати після натискання гарячої клавіші)

Вітаю! Відчуваю, що в цьому макросі є все що потрібно для моєї завдання, але як його виокремити знань не вистачає.

А потрібно дуже просте, але з іншого боку дуже потрібне для вебмайстрів дію (в інеті обшукали - купа шукає відповіді, нуль відповідають): зберегти поточний .xls в .csv в кодуванні "utf-8 без ВОМ", а потрібно це для імпорту на сайт даних з excel.

Кожен раз міняти кодування csv в блокноті утомливо, а так буде швидше (а я правильно розумію, що макрос і кнопка його запуску самі втечуть з csv?)

Шановний адміністратор! Дякую за допомогу, тільки це не зовсім те, що мені потрібно :) Мені потрібно писати дані з першого стовпчика не в назву файлу, а в сам файл. Припустимо у мене в першому стовпці є рядки: 34,35,36. У в другому стовпці відповідно рядки 11, 12, 12. На виході я хотів би отримати відповідно 2 файли txt: Перший буде називатися "11" і в ньому будуть дані: "34", а другий буде називатися "12" і в ньому будуть дані: "35/36". Заздалегідь дякую за допомогу. )

Замініть в коді цей рядок

PS: знак "/" не можна використовувати в імені файлу, - тому роздільником поставив символ "-"

Трохи модифікував ваш макрос під себе, але дещо не можу зробити. У мене є 2 стовпці з числами. Мені потрібно формувати текстові файли з назвами з 2 стовпці, в них писати дані з першого стовпчика. Це робиться добре. Але якщо у 2 стовпці число збігається з попереднім, то створюється файл з такою ж назвою і він перезаписує минулий файл. А мені потрібно щоб туди дописувалося число з першого стовпчика через знак "/". Наприклад 123456/789012. Як це зробити?

Такому не вчать ніде - можна тільки самому навчитися. якщо є інтерес до програмування.

Схожі статті