Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу перенос/удаление файлов по списку
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
diment diment вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.07.2006
По умолчанию перенос/удаление файлов по списку - 17.05.2016, 18:07

Уважаемые форумчане, помогите написать процедуру для переноса или удаления файлов по списку.
в директории несколько тысяч екселевских файлов. так же есть список части этих файлов. файлы в соответствии с этим списком нужно удалить или переместить
Ответить с цитированием
  (#2 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 17.05.2016, 18:44

Часть файла - это текст, который может встречаться в имени файла ?
Ответить с цитированием
  (#3 (permalink)) Старый
diment diment вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.07.2006
По умолчанию 17.05.2016, 18:56

нет. это полные названия файлов, но не всех из указанной директории, а только некоторых из них.
грубо говоря в папке лежат
xxx.xls
yyy.xls
zzz.xlsx
aaa.xlsx

а у меня есть список где в один столбец перечислены
yyy.xls
aaa.xlsx


нужно что бы файлы из списка чудесным образом удалились или переместились. вручную возня очень долгая - несколько тысяч файлов и идут не подряд
Ответить с цитированием
  (#4 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 17.05.2016, 19:52

Предполагается, что список файлов - находится в ячейках столбца A активного рабочего листа. При желании, перебор ячеек можно заменить на перебор элементов массива и учесть, что начиная с XL2007 количество строк уже больше 65536

VB Код:
Private Sub Test()
    Dim iCell As Range
   
    iPath1$ = "C:\Исходная папка\" 'Не забудьте завершающий слэш
   iPath2$ = "C:\Новая папка\"    'И здесь ...
   
    For Each iCell In Range([A1], [A65536].End(xlUp))
        iFileName$ = iPath1 & iCell.Text
        If Dir(iFileName$) <> "" Then
           'Kill iFileName$                         'Удаление
          'Name iFileName$ As iPath2$ & iCell.Text 'Перемещение
          'Name iFileName$ As Replace(iFileName$, iPath1$, iPath2$) 'Тоже самое
       End If
    Next
End Sub
Ответить с цитированием
  (#5 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 18.05.2016, 08:32

Чуть не забыл :
- после тестирования, нужно выбрать один вариант, т.е. либо удаление, либо перемещение. Для этого, достаточно просто убрать апостроф '
- если Вы выберите перемещение, то папка, куда должны быть перенесены файлы - должна существовать.
- если в исходной папке могут быть, например, скрытые файлы, то для "поиска" таких файлов можно использовать второй(необязательный) аргумент VB(A) функции Dir
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
diment diment вне форума
Member
 
Сообщений: 227
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.07.2006
По умолчанию 18.05.2016, 11:30

Павел, спасибо!) как и в подавляющем большинстве случаев, помощь в сложных вопросах я получаю в основном от тебя)
Ответить с цитированием
  (#7 (permalink)) Старый
pashulka pashulka вне форума
Member
 
Сообщений: 1,872
Сказал(а) спасибо: 2
Поблагодарили 57 раз(а) в 53 сообщениях
Регистрация: 11.03.2005
По умолчанию 18.05.2016, 21:10

Дмитрий, На всякий случай - решить поставленную задачу также можно, если поступить наоборот, т.е. перебирать файлы и искать имя файла в указанном диапазоне.

VB Код:
Private Sub Test2()
    Dim iSource As Range, iPath1$, iPath2$, iFileName$
    Set iSource = [A:A] 'Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
   
    iPath1 = "C:\Исходная папка\" 'Не забудьте завершающий слэш
   iPath2 = "C:\Новая папка\"    'И здесь ...
   iFileName = Dir(iPath1) 'Dir(iPath1, vbHidden)
   
    Do Until iFileName = ""
        If Not iSource.Find(iFileName, , xlValues, xlWhole) Is Nothing Then
           'Kill iPath1 & iFileName                       'Удаление
          'Name iPath1 & iFileName As iPath2 & iFileName 'Перемещение
       End If
        iFileName = Dir
    Loop
End Sub

VB Код:
Private Sub Test3()
    Dim iSource As Range, iFile As Object
    Set iSource = [A:A] 'Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
   
    With CreateObject("Scripting.FileSystemObject")
         For Each iFile In .GetFolder("C:\Исходная папка").Files
             If Application.CountIf(iSource, iFile.Name) > 0 Then
                'iFile.Delete True            'Удаление
               'iFile.Move "C:\Новая папка\" 'Перемещение
            End If
         Next
    End With
End Sub

Правда во всех трёх вариантах, необходимо учитывать, что при перемещении файла, в новой папке - не должно быть файла с таким же именем, иначе возникнет ошибка.

P.S. Кое что о работе с файлами в MS Excel - можно найти здесь.

Последний раз редактировалось pashulka; 18.05.2016 в 21:18
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файлов Tdutybq Любые вопросы от новичков 5 05.07.2012 19:24
перенос файлов святой Любые вопросы от новичков 1 08.04.2012 10:57
перенос файлов vitalijvajt Вопросы начинающих программистов 1 07.10.2011 05:27
Извлечение файлов по списку Shwarz Администрирование и базы данных 0 21.02.2011 15:08
Перенос файлов с магнитофона esmilcan Софт и программы 12 22.03.2008 11:26
Удаление файлов из Listbox ROLF Delphi 17 25.06.2007 19:14
Удаление файлов из директории Phantom_s1 Общие вопросы программирования 2 31.10.2005 13:29
Удаление файлов Bardessa PHP 2 11.12.2004 03:44
Удаление файлов TmP как это делать lexey Delphi 5 01.11.2004 09:06
Перенос файлов в World из C++ Anonymous Вопросы начинающих программистов 0 24.05.2004 20:52
Создание и удаление файлов IgorLem Visual C++ 1 11.05.2004 19:06
Удаление файлов Начинающий Офтопик 0 02.12.2003 14:00



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов