Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 9
1

Найти и скопировать в отдельную папку все файлы по маске

08.02.2016, 07:12. Показов 3553. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем здравствуйте,

Необходимо чтобы файлы, находящиеся в одной папке (и подпапках) с рабочей книгой, находились по маске и копировались в отдельную директорию.

Нижеприведенный код, копирует все файлы с подпапок (чьи имена взяты с отдельной колонки, SubFolder) без учета маски (взятой тоже c колонки, sMask) в папку с именем текстбокса (txt_banum) на рабочий стол пользователя.

Также, создается выборка - таблица фильтруется по txt_banum.Value и копируется на отдельный файл.

Как все же осуществить поиск по маске файлов во всех подпапках (без SubFolder)?

Через FSO пробовал, не получилось =(
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Private Sub cmd_ok_Click()
 
 
Dim sFilesPath As String, sNewPath As String, sMask As String
Dim sFolder As String, sFiles As String, SubFolder As String, sDoc As String
Dim sFile As String
 
 
 
If txt_banum.Text = "" Or Len(txt_banum.Text) < 13 Then
    MsgBox "НЕДОСТАТОЧНО СИМВОЛОВ!", vbCritical
    'Selection.AutoFilter
    Exit Sub
End If
 
 
lLastRow = Cells.SpecialCells(xlLastCell).Row
 
 
Set iskk = Sheets(2).Range("A:A").Find(txt_banum.Text, lookat:=xlWhole)
 
 
If Not iskk Is Nothing Then
ActiveSheet.Range("$A$1:$D$" & lLastRow).AutoFilter Field:=1, Criteria1:=txt_banum.Text
 
 
 
Range("$A$1:$D$" & lLastRow).Copy
Sheets("CurrData").Cells.Delete
Selection.Copy Sheets("CurrData").Range("A1")
Sheets("CurrData").Columns("A:D").ColumnWidth = 20
 
 
Selection.AutoFilter
Dim username1
Dim path As String
 
username1 = Environ("USERNAME")
path = "C:\Users" & "" & username1 & "" & "Desktop" & "" & txt_banum.Value
check = Dir(path & Application.PathSeparator, vbDirectory)
 
With ThisWorkbook.Sheets("CurrData")
        If Len(check) > 0 Then
        MsgBox ("Папка " & txt_banum.Value & " уже существует")
        Else
        MkDir path
        End If
        NewPath = path & Application.PathSeparator & "Summary" & ".xlsx"
        ThisWorkbook.Sheets("CurrData").Copy
        ActiveWorkbook.SaveAs (NewPath)
        ActiveWorkbook.Close
End With
ThisWorkbook.Activate
 
sNewPath = path & Application.PathSeparator 'куда перемещать файлы
 
Application.ScreenUpdating = False
        kon = Sheets("CurrData").Range("I10000").End(xlUp).Row
            'kona = Sheets("CurrData").Range("C10000").End(xlUp).Row
        For i = 2 To kon
            SubFolder = Sheets("CurrData").Cells(i, 9).Value
            sDoc = Sheets("CurrData").Cells(i, 3).Value
 
 
sFilesPath = ThisWorkbook.path & "" & SubFolder & Application.PathSeparator 'откуда перемещать файлы
sMask = sDoc
 
    sFolder = sFilesPath
    sFiles = Dir(sFolder)
    
    Do While sFiles <> ""
        If InStr(sFiles, sMask) < 2 Then
    
            FileCopy sFolder & Application.PathSeparator & sFiles, sNewPath & Application.PathSeparator & sFiles
        End If
        sFiles = Dir
    Loop
 
 
    Application.ScreenUpdating = True
Next
 
txt_banum.Value = ""
MsgBox "Пакет документов создан в директории " & path
 
uf_main.Hide
 
Selection.AutoFilter
 
        Else: MsgBox "Номер не Найден!", vbCritical
        Sheets("CurrData").Cells.Delete
        Sheets(2).Select
        lLastRow = Cells.SpecialCells(xlLastCell).Row
        End If
 
End Sub
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2016, 07:12
Ответы с готовыми решениями:

Скопировать файлы из папки в папку по маске
Всем привет! Использую cmd Подскажите, пожалуйста, как написать запрос, чтобы скопировать все...

Как скопировать файлы по маске в папку?
Люди, помогите решить задачу: из задаваемой пользователем папки нужно скопировать все файлы по...

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

Скопировать все файлы exe в папку
Есть код: import os from shutil import copyfile import glob import getpass UserName =...

4
Казанский
08.02.2016, 09:15
  #2

Не по теме:

кросспостинг на многих форумах :negative:

0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 9
08.02.2016, 10:30  [ТС] 3
я прошу прощения, но мне нужно узнать как скопировать все файлы по маске в отдельную папку.
0
Заблокирован
08.02.2016, 10:34 4
Все файлы - function DIR
Скопировать - sub FILECOPY
Кнопку F1 не можете найти?
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 9
09.02.2016, 08:22  [ТС] 5
F1 нашел. Но мой код копирует все файлы в папке в заданную. Не могу понять почему, поможете?
0
09.02.2016, 08:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2016, 08:22
Помогаю со студенческими работами здесь

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

Как скопировать с диска все файлы, в которых есть определённый текст, в одну папку?
А как скопировать все файлы на диске в которых есть определенный текст в одну папку ?

Как скопировать все *.jpg файлы с рабочего стола в папку на рабочем столе, не зная имени пользователя в пути?
Как скопировать все *.jpg файлы с рабочего стола в папку на рабочем столе, не зная имени...

Найти по маске все файлы и пройтись фором
написать скрипты, позволяющие переименовать все файлы, имена которых совпадают с заданной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru