Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перенос файлов из одной папки в другую - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос файлов из одной папки в другую (Макросы Sub)
Перенос файлов из одной папки в другую
Hugo Дата: Четверг, 23.01.2014, 15:03 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
[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" на свой путь.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
Сообщение[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
Дата добавления - 23.01.2014 в 15:03
raul_7 Дата: Четверг, 23.01.2014, 17:34 | Сообщение № 22
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 40% ±

Hugo, хороший вариант, только как это реализовать. Если есть возможность и время подскажите пожалуйста или где можно посмотреть.
 
Ответить
СообщениеHugo, хороший вариант, только как это реализовать. Если есть возможность и время подскажите пожалуйста или где можно посмотреть.

Автор - raul_7
Дата добавления - 23.01.2014 в 17:34
raul_7 Дата: Четверг, 23.01.2014, 17:37 | Сообщение № 23
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 40% ±

Hugo, Извините не увидел, что есть второй лист (на форуме) и на нем вы предложили уже готовый код. Спасибо, буду пробовать.
 
Ответить
СообщениеHugo, Извините не увидел, что есть второй лист (на форуме) и на нем вы предложили уже готовый код. Спасибо, буду пробовать.

Автор - raul_7
Дата добавления - 23.01.2014 в 17:37
Hugo Дата: Четверг, 23.01.2014, 17:56 | Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Этот код даст Вам папку - далее обрабатывайте её файлы.
Может быть действительно не нужно их никуда переносить?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЭтот код даст Вам папку - далее обрабатывайте её файлы.
Может быть действительно не нужно их никуда переносить?

Автор - Hugo
Дата добавления - 23.01.2014 в 17:56
raul_7 Дата: Четверг, 30.01.2014, 21:47 | Сообщение № 25
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 40% ±

Уважаемый 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
Дата добавления - 30.01.2014 в 21:47
Wasilich Дата: Четверг, 30.01.2014, 23:55 | Сообщение № 26
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Вот натура а, ну не могу пройти мимо, глядя на этот ОГОРОД!
Из планеты:
Цитата
пять файлов формата 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.
Неужели нельзя переделать макрос так, чтобы он брал эти файлы непосредственно из папки с определенной датой.
Так же и проще и надежней.


Сообщение отредактировал Wasilic - Четверг, 30.01.2014, 23:56
 
Ответить
СообщениеВот натура а, ну не могу пройти мимо, глядя на этот ОГОРОД!
Из планеты:
Цитата
пять файлов формата 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
Дата добавления - 30.01.2014 в 23:55
Hugo Дата: Пятница, 31.01.2014, 02:28 | Сообщение № 27
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну так и я это предлагал в сообщении 24! Кодом который чуть выше находим нужную папку (хотя если её полное название известно - то и искать её не нужно), далее берём все csv.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу так и я это предлагал в сообщении 24! Кодом который чуть выше находим нужную папку (хотя если её полное название известно - то и искать её не нужно), далее берём все csv.

Автор - Hugo
Дата добавления - 31.01.2014 в 02:28
raul_7 Дата: Воскресенье, 02.02.2014, 18:33 | Сообщение № 28
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 40% ±

Wasilic, Может так проще и надежней... Будем думать
 
Ответить
СообщениеWasilic, Может так проще и надежней... Будем думать

Автор - raul_7
Дата добавления - 02.02.2014 в 18:33
raul_7 Дата: Воскресенье, 02.02.2014, 18:35 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 40% ±

Hugo, Спасибо за отклик, будем дальше экспериментировать.
 
Ответить
СообщениеHugo, Спасибо за отклик, будем дальше экспериментировать.

Автор - raul_7
Дата добавления - 02.02.2014 в 18:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенос файлов из одной папки в другую (Макросы Sub)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!