'сканирование подпапок (необходимо подключить библиотеку Microsoft Shell Controls And Automation). Private Const filterOnlyFolders = 32 Private Const filterOnlyFiles = 64 Private FShell As Shell32.Shell Private FRow As Long Private FSheet As Worksheet
Public Sub StartScan() Set FSheet = ActiveSheet Set FShell = New Shell32.Shell FRow = 0 Scan "c:\Temp", "*" & InputBox("Дата?", "Введите дату дд.мм.гггг", Format(Now(), "dd.mm.yyyy")) & "*" End Sub
Public Sub Scan(ByVal folderPath As String, SearchDate As String) Dim pFolder As Shell32.Folder3 Dim pItems As Shell32.FolderItems3 Dim pItem As Shell32.FolderItem
Set pFolder = FShell.Namespace(folderPath) Set pItems = pFolder.Items pItems.Filter filterOnlyFolders, SearchDate
If pItems.Count > 0 Then For Each pItem In pItems FRow = FRow + 1 'соответственно вместо записи пути и имени файла можно вызвать что угодно FSheet.Cells(FRow, 1).Value = pItem.Path Next pItem End If End Sub
[/vba]
Выполните на чистом листе - пишет пути на лист. Замените "c:\Temp" на свой путь.
[vba]
Код
'сканирование подпапок (необходимо подключить библиотеку Microsoft Shell Controls And Automation). Private Const filterOnlyFolders = 32 Private Const filterOnlyFiles = 64 Private FShell As Shell32.Shell Private FRow As Long Private FSheet As Worksheet
Public Sub StartScan() Set FSheet = ActiveSheet Set FShell = New Shell32.Shell FRow = 0 Scan "c:\Temp", "*" & InputBox("Дата?", "Введите дату дд.мм.гггг", Format(Now(), "dd.mm.yyyy")) & "*" End Sub
Public Sub Scan(ByVal folderPath As String, SearchDate As String) Dim pFolder As Shell32.Folder3 Dim pItems As Shell32.FolderItems3 Dim pItem As Shell32.FolderItem
Set pFolder = FShell.Namespace(folderPath) Set pItems = pFolder.Items pItems.Filter filterOnlyFolders, SearchDate
If pItems.Count > 0 Then For Each pItem In pItems FRow = FRow + 1 'соответственно вместо записи пути и имени файла можно вызвать что угодно FSheet.Cells(FRow, 1).Value = pItem.Path Next pItem End If End Sub
[/vba]
Выполните на чистом листе - пишет пути на лист. Замените "c:\Temp" на свой путь.Hugo
Уважаемый Hugo, видимо я переоценил свои возможности, несколько дней пробовал в предложенный вами код интегрировать, то что мне предложили на http://www.planetaexcel.ru, а именно ссылка на некий ресурс (http://www.excel-vba.ru/chto-umeet-excel/kak-sredstvami-vba-pereimenovatperemestitskopirovat-fajl/) с примерами переноса и т.д. файлов. Но что-то не выходит "каменный цветок". Если есть возможность подскажите как в выбранной папке выбирать файл для переноса. sFileName = sNewFileName = Как будет выглядеть путь к файлу с учетом папки, которая определяется по текущей дате?
Уважаемый Hugo, видимо я переоценил свои возможности, несколько дней пробовал в предложенный вами код интегрировать, то что мне предложили на http://www.planetaexcel.ru, а именно ссылка на некий ресурс (http://www.excel-vba.ru/chto-umeet-excel/kak-sredstvami-vba-pereimenovatperemestitskopirovat-fajl/) с примерами переноса и т.д. файлов. Но что-то не выходит "каменный цветок". Если есть возможность подскажите как в выбранной папке выбирать файл для переноса. sFileName = sNewFileName = Как будет выглядеть путь к файлу с учетом папки, которая определяется по текущей дате?raul_7
Вот натура а, ну не могу пройти мимо, глядя на этот ОГОРОД! Из планеты:
Цитата
пять файлов формата CSV, записываются в новую папку. (например 01.01.2014). Файл EXCEL куда данные из CSV файлов переносятся (макросом) и делаются различные расчеты.
Ну это все понятно
А вот это:
Цитата
Но перед тем как занести эти файлы нужно каждый файл перенести в отдельную папку (чтобы выгрузить данные за 01.01.2014 необходимо из папки с названием 01.01.2014 скопировать файлы 1.CSV в папку 1; 2.CSV в папку 2; и т.д все 5-ть файлов) Суть задачи состоит в том, чтобы за текущую дату файлы из папки соответствующей текущей даты переносились каждый в свою папку, перед этим удалив предыдущие файлы в этих папках.
это же, лишний гемор!!! Ну понятно, есть папки 1, 2, 3, 4, 5, из которых (кем то написанный) макрос берет соответствующие файлы - 1.CSV, 2.CSV, 3.CSV, 4.CSV, 5.CSV. Неужели нельзя переделать макрос так, чтобы он брал эти файлы непосредственно из папки с определенной датой. Так же и проще и надежней.
Вот натура а, ну не могу пройти мимо, глядя на этот ОГОРОД! Из планеты:
Цитата
пять файлов формата CSV, записываются в новую папку. (например 01.01.2014). Файл EXCEL куда данные из CSV файлов переносятся (макросом) и делаются различные расчеты.
Ну это все понятно
А вот это:
Цитата
Но перед тем как занести эти файлы нужно каждый файл перенести в отдельную папку (чтобы выгрузить данные за 01.01.2014 необходимо из папки с названием 01.01.2014 скопировать файлы 1.CSV в папку 1; 2.CSV в папку 2; и т.д все 5-ть файлов) Суть задачи состоит в том, чтобы за текущую дату файлы из папки соответствующей текущей даты переносились каждый в свою папку, перед этим удалив предыдущие файлы в этих папках.
это же, лишний гемор!!! Ну понятно, есть папки 1, 2, 3, 4, 5, из которых (кем то написанный) макрос берет соответствующие файлы - 1.CSV, 2.CSV, 3.CSV, 4.CSV, 5.CSV. Неужели нельзя переделать макрос так, чтобы он брал эти файлы непосредственно из папки с определенной датой. Так же и проще и надежней.Wasilich
Сообщение отредактировал Wasilic - Четверг, 30.01.2014, 23:56
Ну так и я это предлагал в сообщении 24! Кодом который чуть выше находим нужную папку (хотя если её полное название известно - то и искать её не нужно), далее берём все csv.
Ну так и я это предлагал в сообщении 24! Кодом который чуть выше находим нужную папку (хотя если её полное название известно - то и искать её не нужно), далее берём все csv.Hugo