Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Разбивка строк общего файла на отдельные csv файлы

Ответить
Настройки темы
VBA - Разбивка строк общего файла на отдельные csv файлы

Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: jordan_74
Дата: 03-09-2018
Добрый день всем!! Нужна помощь с написанием макроса.
Имеется 3 папки Шаблон, Реестр и Итог
В папке Реестр лежит исходный файл excel с данными. В папке шаблон лежит файл с именем check формата csv, который планируется использовать в качестве шаблона.
Нужен макрос, который бы открывал исходный файл, копировал данные в файл шаблона.csv и сохранял этот файл шаблона в папку "Итог" с именем сheck1. Каждая строка исходного файла = один файл check. То есть если в исходном файле условно 50 строк, то должно получиться 49 чеков(в последнюю строку исходного файла выводится общая сумма, она не нужна) Имена файлов в папке итог должны быть от check1 до условно check49

Данные для копирования:
E2(исх) в B3(шаблон);
E2(исх) в F2(шаблон);
F2(исх) в D3,D4,H3(шаблон)


В файле шаблона check ячейка L3 должна рассчитываться по формуле (F2(исх)*18)/118

F2, E2 это ячейки первой строки с данными, т.к выше только заголовки столбцов. То есть когда цикл пробегает по следующей строчке, будет уже не F2, E2 а F3, E3 и т.д

Надеюсь понятно объяснил) С VBA знаком крайне поверхностно. Нашел на форуме лишь решение по копированию файлов.

Sub DirCopy()
Dim OldPath$, NewPath$, Shablon$, OnlyName$
OldPath = "C:\proba\zvit\"
NewPath = "C:\proba\Temp\"
Shablon = "*.*"
OnlyName = Dir(OldPath & Shablon, vbReadOnly + vbHidden + vbSystem)
Do Until OnlyName = ""
FileCopy OldPath & OnlyName, NewPath & OnlyName
OnlyName = Dir
Loop
End Sub

Отправлено: 14:08, 02-09-2018

 

Ветеран


Contributor


Сообщения: 23790
Благодарности: 6935

Профиль | Отправить PM | Цитировать


jordan_74, замечательно. Убирайте комментарий с первой строки и паузу в конце.

Пакетный файл требуется сохранять в кодировке OEM/866. У Вас это не так, посему и не находится ни единого файла.

А меня ещё здесь шпыняют, нахрена зачем, дескать, писать абсолютно никому не нужные портянки кода с проверкой существования аргументов, каталогов, файлов и прочие хреновины. Ну, вот, не написал — и здрастье-пожалуйста.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:26, 12-09-2018 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
мне остается посмеяться только над самим собой
Все работает, обычная невнимательность с моей стороны была причиной всему.
Ещё раз огромное спасибо!!!!!!

Отправлено: 18:13, 12-09-2018 | #32


Ветеран


Contributor


Сообщения: 23790
Благодарности: 6935

Профиль | Отправить PM | Цитировать


jordan_74, ничего страшного, бывает. А вот мне следовало бы зараз догадаться о причинах .

Отправлено: 18:26, 12-09-2018 | #33


Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Добрый день! Я прошу прощения, понадобилось всё таки сделать кол-во знаком после запятой не 1 а 2
Много перерабатывать, где корректировки внести подскажите пожалуйста?

Отправлено: 12:11, 20-09-2018 | #34


Ветеран


Contributor


Сообщения: 23790
Благодарности: 6935

Профиль | Отправить PM | Цитировать


Цитата jordan_74:
понадобилось всё таки сделать кол-во знаком после запятой не 1 а 2 »
Код: Выделить весь код
.Range("L3").Value = Round((anyValue * 18) / 118, 2)
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:27, 20-09-2018 | #35


Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Да я уже поправил, спасибо. И теперь встал наверно главный вопрос.
Нужно чтобы скрипт отрабатывал, при этом батник запускающий скрипт и скрипт лежали где то в другом месте, не на компе пользователя
Передавать параметры.
Все для того, чтобы при переносе на другой комп, не приходилось постоянно менять пути в скрипте и батнике.

Отправлено: 12:32, 20-09-2018 | #36


Ветеран


Contributor


Сообщения: 23790
Благодарности: 6935

Профиль | Отправить PM | Цитировать


jordan_74, поясните более подробно, что Вы имеете в виду.

Отправлено: 12:48, 20-09-2018 | #37


Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Скрипт, шаблон и батник, который запускает скрипт будут лежать где то в сети.

Пользователь на своём компе будет запускать батник, который активирует(запускает) батник - который запускает в работу скрипт. )) я прошу прощения за такую тавтологию.

У пользователя будет 2 папки - Реестр и Итог, и тот самый батник.

Как это можно осуществить? ) Я полагаю это можно сделать как то с помощью передачи параметров.
В качестве параметров видимо должны быть пути к папке с файлом(ами) реестра, и к папке Итог

Последний раз редактировалось jordan_74, 20-09-2018 в 13:24.


Отправлено: 12:55, 20-09-2018 | #38


Ветеран


Contributor


Сообщения: 23790
Благодарности: 6935

Профиль | Отправить PM | Цитировать


Отнюдь. У нас три составляющих:
  • путь к файлу шаблона;
  • путь к целевому каталогу;
  • путь к исходным файлам.
В нашем коде мы жёстко указывали путь к файлу шаблона и путь к целевому каталогу. Путь к исходным файлам задавался параметром.

Ваши предложения?

Отправлено: 20:03, 20-09-2018 | #39


Пользователь


Сообщения: 60
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,

Откровенно говоря предложений пока нет.

Можно попытаться использовать команду "psexec" для запуска батника(а затем и скрипта по сети)

//что то в духе

@echo off
psexec \\IP или имя компа\Documents and Settings\User\kill.cmd
exit

Отправлено: 11:57, 25-09-2018 | #40



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Разбивка строк общего файла на отдельные csv файлы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Создание .bat файла для выборки строк из .csv файла в .xlsx GODolubOFF Скриптовые языки администрирования Windows 10 14-12-2015 15:34
CMD/BAT - Чтение указанной строки и разбив на отдельные символы и запись их в отдельные меремен angel_lyucifer Скриптовые языки администрирования Windows 0 10-05-2015 20:48
CMD/BAT - [решено] Периеминование файла doc.csv в Документ_дата_время.csv kagorec Скриптовые языки администрирования Windows 2 29-03-2014 18:40
CMD/BAT - [решено] Разбивка текстового файла файла Seryoga204 Скриптовые языки администрирования Windows 1 04-10-2010 21:19
Установка - Разбивка файла .gho на куски Pavelnt Microsoft Windows 2000/XP 2 15-05-2009 12:15




 
Переход