1. Есть ПО из которой каждый день выгружаются несколько файлов (CSV) в папку (имя папки - дата за которую файл выгружен). 2. Есть книга Excel в которую с помощью макроса выгружаются данные из CSV файлов. 3. Задача состоит в том, чтобы с помощью макроса, за текущую дату (дата сопоставляется с именем папки п.1) файлы переносились в другие папки, каждый в свою и при переносе на следующий день, заменялись новыми.
1. Есть ПО из которой каждый день выгружаются несколько файлов (CSV) в папку (имя папки - дата за которую файл выгружен). 2. Есть книга Excel в которую с помощью макроса выгружаются данные из CSV файлов. 3. Задача состоит в том, чтобы с помощью макроса, за текущую дату (дата сопоставляется с именем папки п.1) файлы переносились в другие папки, каждый в свою и при переносе на следующий день, заменялись новыми.raul_7
Да как тут приступать? Никакой конкретики... Пока вот пример "на растерзание":
[vba]
Код
Sub ПереименоватьГруппуФайлов() Dim OldName As String, NewName As String, sPath As String Dim i As Long, lLastRow As Long sPath = "C:\Documents and Settings\Родители\Рабочий стол\Базы\Disks\Дизайны\K&K\kik\" lLastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lLastRow OldName = sPath & Cells(i, 1) & ".GIF" 'старое имя в ячейке NewName = sPath & Cells(i, 2) & ".GIF" 'новое имя Name OldName As NewName Next i End Sub
[/vba]
Да как тут приступать? Никакой конкретики... Пока вот пример "на растерзание":
[vba]
Код
Sub ПереименоватьГруппуФайлов() Dim OldName As String, NewName As String, sPath As String Dim i As Long, lLastRow As Long sPath = "C:\Documents and Settings\Родители\Рабочий стол\Базы\Disks\Дизайны\K&K\kik\" lLastRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lLastRow OldName = sPath & Cells(i, 1) & ".GIF" 'старое имя в ячейке NewName = sPath & Cells(i, 2) & ".GIF" 'новое имя Name OldName As NewName Next i End Sub
Уважаемый Hugo, а какая конкретика необходима при решении данной задачи? Как сделать вот это: iOldFile = "Q:\1\1.xls" iNewFile = "Q:\2\2.xls" FileCopy iOldFile, iNewFile End Sub Только чтобы файлы хватались из папки в названии которой присутствует текущая дата. Может я описываю, что-то не так Вы уж меня извините, я не программист.
Уважаемый Hugo, а какая конкретика необходима при решении данной задачи? Как сделать вот это: iOldFile = "Q:\1\1.xls" iNewFile = "Q:\2\2.xls" FileCopy iOldFile, iNewFile End Sub Только чтобы файлы хватались из папки в названии которой присутствует текущая дата. Может я описываю, что-то не так Вы уж меня извините, я не программист.raul_7
из папки в названии которой присутствует текущая дата
- ну можно конечно сделать по такой вводной. Но вот никакого желания обрабатывать все варианты этого присутствия (я не говорю, что мы не знаем Вашей страны, и поэтому теоретически дата может быть словами (месяц) на любом языке мира). Или
из папки в названии которой присутствует текущая дата
- ну можно конечно сделать по такой вводной. Но вот никакого желания обрабатывать все варианты этого присутствия (я не говорю, что мы не знаем Вашей страны, и поэтому теоретически дата может быть словами (месяц) на любом языке мира). Или
Wasilic, 2.Очень ВАЖНО! При создании темы, давайте теме название, отражающее суть Вашей проблемы и указывайте предпочитаемый способ решения (формулы или макросы). Создавать темы типа «ХЕЛП», «Условное форматирование», «Проблема с макросом», «ПОМОГИТЕ», «Не работает формула», «Как решить?» и подобные - НЕЛЬЗЯ!!! Такие темы будут закрываться или удаляться.
3. Кратко, но ёмко опишите задачу в теле поста. ВСЕГДА прикладывайте файл-пример, кроме тех случаев, когда вопрос носит общий характер и не касается конкретно Вашего файла. Темы касающиеся конкретного файла, но без приложенного примера, будут закрываться или удаляться.
Из-за этого я не стал с кучей восклицательных знаков писать о помощи с кучей смайлов. А задача звучит ни как задание для студента, а как очень краткое и неполное ТЗ. Просто помимо вас есть ещё люди, которые говорят, что не нужно соплей и ближе к делу, а каждого характер угадывать смысла нет. Если вы посчитали строгое описание задачи для вас оскорбительным, пройдите мимо.
Wasilic, 2.Очень ВАЖНО! При создании темы, давайте теме название, отражающее суть Вашей проблемы и указывайте предпочитаемый способ решения (формулы или макросы). Создавать темы типа «ХЕЛП», «Условное форматирование», «Проблема с макросом», «ПОМОГИТЕ», «Не работает формула», «Как решить?» и подобные - НЕЛЬЗЯ!!! Такие темы будут закрываться или удаляться.
3. Кратко, но ёмко опишите задачу в теле поста. ВСЕГДА прикладывайте файл-пример, кроме тех случаев, когда вопрос носит общий характер и не касается конкретно Вашего файла. Темы касающиеся конкретного файла, но без приложенного примера, будут закрываться или удаляться.
Из-за этого я не стал с кучей восклицательных знаков писать о помощи с кучей смайлов. А задача звучит ни как задание для студента, а как очень краткое и неполное ТЗ. Просто помимо вас есть ещё люди, которые говорят, что не нужно соплей и ближе к делу, а каждого характер угадывать смысла нет. Если вы посчитали строгое описание задачи для вас оскорбительным, пройдите мимо.raul_7
Ну раз и ещё на одном - то зачем здесь кому-то зря работать? Наверняка там помогут... или уже помогли. Ну разве что кому-то совсем скучно... Хотя нет - здесь ведь детали так и не прояснили!
По делу - судя по всему, Вам нужно искать код перебора папок (вопрос - перебирать где? не по всей ведь домашней сетке?) и определения папки с текущей датой в названии. Но - что будете делать после праздников? Или после болезни или прогула? Текущая ведь будет уже другая!
Ну раз и ещё на одном - то зачем здесь кому-то зря работать? Наверняка там помогут... или уже помогли. Ну разве что кому-то совсем скучно... Хотя нет - здесь ведь детали так и не прояснили!
По делу - судя по всему, Вам нужно искать код перебора папок (вопрос - перебирать где? не по всей ведь домашней сетке?) и определения папки с текущей датой в названии. Но - что будете делать после праздников? Или после болезни или прогула? Текущая ведь будет уже другая!Hugo
Pelena, я знаю, что мне ни кто ничего не должен. Трактовать каждый может как ему выгодно. И поверьте мне не трудно сказать спасибо и признать свои ошибки, более того если эта трудная задача и человек её готов выполнить за вознаграждение я это только приветствую. Но не все могут ставить правильно вопросы и к этому нужно подходить с пониманием.
Pelena, я знаю, что мне ни кто ничего не должен. Трактовать каждый может как ему выгодно. И поверьте мне не трудно сказать спасибо и признать свои ошибки, более того если эта трудная задача и человек её готов выполнить за вознаграждение я это только приветствую. Но не все могут ставить правильно вопросы и к этому нужно подходить с пониманием.raul_7
Hugo, "По делу - судя по всему, Вам нужно искать код перебора папок (вопрос - перебирать где? не по всей ведь домашней сетке?) и определения папки с текущей датой в названии". Перебор нужен в папке Q:\1. В этой папке находятся папки для перебора, а именно те у которых имя папки это дата. "Но - что будете делать после праздников? Или после болезни или прогула? Текущая ведь будет уже другая!" - хороший вопрос над которым я думал. Предприятие работает бес перерывов (специфика), а если когда возникнет такая проблема, то переименуют папку в текущую дату и посчитают данные для отправки. Другого способа решения я не вижу, а соответственно и описать задачу не смогу.
Hugo, "По делу - судя по всему, Вам нужно искать код перебора папок (вопрос - перебирать где? не по всей ведь домашней сетке?) и определения папки с текущей датой в названии". Перебор нужен в папке Q:\1. В этой папке находятся папки для перебора, а именно те у которых имя папки это дата. "Но - что будете делать после праздников? Или после болезни или прогула? Текущая ведь будет уже другая!" - хороший вопрос над которым я думал. Предприятие работает бес перерывов (специфика), а если когда возникнет такая проблема, то переименуют папку в текущую дату и посчитают данные для отправки. Другого способа решения я не вижу, а соответственно и описать задачу не смогу.raul_7
Другой способ - в начале кода инпутбокс с запросом даты, предлагая текущую. Стандартно жмёте ОК и идёте дальше. Если нужно за вчера - меняете дату.
Другой способ - в начале кода инпутбокс с запросом даты, предлагая текущую. Стандартно жмёте ОК и идёте дальше. Если нужно за вчера - меняете дату.Hugo