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

Вход

Регистрация

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

 

= Мир MS Excel/Поиск и копирование нужных файлов по списку(таблице)в экселе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Поиск и копирование нужных файлов по списку(таблице)в экселе
олежа525 Дата: Вторник, 23.01.2018, 13:02 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.
Помогите сделать программу в VBA,которая будет искать файлы по таблице(файлы будут в папке до 3 уровня,лучше в корне диска D),а вставлять их нужно будет в новую папку которая будет создана или на рабочем столе\или в той же директории.
Но есть несколько хитростей у этой задаче.(Поэтому в папке будет табличка с пробным задание[табл.V1],и 2 примера ее решения[Примеры результатов],а так же файлы по которым будет идти поиск[Layout] и там 3 подпапки[Blue];[White];[Yellow],а в них,в свою очередь есть еще подпапки от [98] до [164] с опред.интервалом). Сами файлы-изображение формата .tiff
СУТЬ В Том,что файлы в папки [Layout] неизменны,а по табличке [табл.V1] которая будет постоянно меняться,нужно будет создавать каждый раз новую папку с тем набором файлов,который указан в этой табл.
Будет постоянно происходить копирование файлов с одинаковым именем,можно просто подписывать датавремя\копия1'копия2 или как вам будет легче,но в идеале чтобы файл имел имя=[свое имя+путь откуда он взялся],если их будет несколько,тогда имя=[свое имя+путь откуда он взялся]1;2;3и тд,но это по возможности.
если что то нетак,давай те я со своей стороны изменю,например конечные имена файлов и т.д.

А делать это нужно так,если напр. стоит цифра 1 напротив цвета White в табл. размера 110,тогда нужно сделать один белый комплект 110 размера,а это по одному файлу:1,2,3,4,5(т.е. эти 5 файлов образуют комплект)
НО очень важно,если таких комплектов нужно 2 и больше,тогда вместо файлов 3,4,5 нужно использовать 33,44,55(по сути это теже файлы,только спаринные),т.е. чтобы не кидать 2 файлы [3] нужно закинуть один файл [33]. Это делается для файлов 3,4,5, файлы 1 и 2 незаменяемые.

Т.е. если нужно закинуть BLUE размера 98 -3 шт.,тогда нужно закинуть из папки [Layout\Blue\98] по 3 файлы [1],[2] и еще по одному [33,44,55] и еще [3,4,5].
Думаю, если посмотрите на пример,станет легче)
К сообщению приложен файл: .V1.xlsx (9.7 Kb) · Layout.rar (74.8 Kb)


Сообщение отредактировал олежа525 - Вторник, 23.01.2018, 13:07
 
Ответить
СообщениеЗдравствуйте.
Помогите сделать программу в VBA,которая будет искать файлы по таблице(файлы будут в папке до 3 уровня,лучше в корне диска D),а вставлять их нужно будет в новую папку которая будет создана или на рабочем столе\или в той же директории.
Но есть несколько хитростей у этой задаче.(Поэтому в папке будет табличка с пробным задание[табл.V1],и 2 примера ее решения[Примеры результатов],а так же файлы по которым будет идти поиск[Layout] и там 3 подпапки[Blue];[White];[Yellow],а в них,в свою очередь есть еще подпапки от [98] до [164] с опред.интервалом). Сами файлы-изображение формата .tiff
СУТЬ В Том,что файлы в папки [Layout] неизменны,а по табличке [табл.V1] которая будет постоянно меняться,нужно будет создавать каждый раз новую папку с тем набором файлов,который указан в этой табл.
Будет постоянно происходить копирование файлов с одинаковым именем,можно просто подписывать датавремя\копия1'копия2 или как вам будет легче,но в идеале чтобы файл имел имя=[свое имя+путь откуда он взялся],если их будет несколько,тогда имя=[свое имя+путь откуда он взялся]1;2;3и тд,но это по возможности.
если что то нетак,давай те я со своей стороны изменю,например конечные имена файлов и т.д.

А делать это нужно так,если напр. стоит цифра 1 напротив цвета White в табл. размера 110,тогда нужно сделать один белый комплект 110 размера,а это по одному файлу:1,2,3,4,5(т.е. эти 5 файлов образуют комплект)
НО очень важно,если таких комплектов нужно 2 и больше,тогда вместо файлов 3,4,5 нужно использовать 33,44,55(по сути это теже файлы,только спаринные),т.е. чтобы не кидать 2 файлы [3] нужно закинуть один файл [33]. Это делается для файлов 3,4,5, файлы 1 и 2 незаменяемые.

Т.е. если нужно закинуть BLUE размера 98 -3 шт.,тогда нужно закинуть из папки [Layout\Blue\98] по 3 файлы [1],[2] и еще по одному [33,44,55] и еще [3,4,5].
Думаю, если посмотрите на пример,станет легче)

Автор - олежа525
Дата добавления - 23.01.2018 в 13:02
олежа525 Дата: Вторник, 23.01.2018, 13:08 | Сообщение № 2
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Пример результатов
К сообщению приложен файл: 7636651.rar (56.6 Kb)
 
Ответить
СообщениеПример результатов

Автор - олежа525
Дата добавления - 23.01.2018 в 13:08
krosav4ig Дата: Вторник, 23.01.2018, 17:57 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте.
Как-то так
[vba]
Код
Sub Copfyiles()
    Const sPath1$ = "d:\layout\"
    Dim S$, sPath2$, sFrom$, sTo$
    Dim cell As Range, i%, j%
    sPath2 = CreateObject("Shell.Application").Namespace(0).self.path & "\" & [G2] & "\"
    If Dir(sPath2, 16) = "" Then MkDir sPath2
    On Error Resume Next
    With [A2].CurrentRegion
        For Each cell In .Offset(1, 1).SpecialCells(xlCellTypeConstants, 1).Cells
            S = Intersect(cell.EntireColumn, .Rows(1)) & "\" & Intersect(cell.EntireRow, .Columns(1)) & "\"
            sFrom = sPath1 & S
            sTo = sPath2 & Replace(S, "\", "_")
            For i = 1 To 5
                For j = 1 To cell
                    Select Case True
                        Case i < 3 Or (j = cell And j Mod 2)
                            FileCopy sFrom & i & ".tif", sTo & i & "-" & j & ".tif"
                        Case (j Mod 2) = 0
                            FileCopy sFrom & i * 11 & ".tif", sTo & i * 11 & "-" & j \ 2 & ".tif"
                    End Select
                Next
            Next
        Next
    End With
    If MsgBox("Готово!" & vbLf & "Открыть папку?", 36) = 6 Then Shell "explorer """ & sPath2 & """", 1
End Sub
[/vba]
К сообщению приложен файл: .V1.xlsm (19.5 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте.
Как-то так
[vba]
Код
Sub Copfyiles()
    Const sPath1$ = "d:\layout\"
    Dim S$, sPath2$, sFrom$, sTo$
    Dim cell As Range, i%, j%
    sPath2 = CreateObject("Shell.Application").Namespace(0).self.path & "\" & [G2] & "\"
    If Dir(sPath2, 16) = "" Then MkDir sPath2
    On Error Resume Next
    With [A2].CurrentRegion
        For Each cell In .Offset(1, 1).SpecialCells(xlCellTypeConstants, 1).Cells
            S = Intersect(cell.EntireColumn, .Rows(1)) & "\" & Intersect(cell.EntireRow, .Columns(1)) & "\"
            sFrom = sPath1 & S
            sTo = sPath2 & Replace(S, "\", "_")
            For i = 1 To 5
                For j = 1 To cell
                    Select Case True
                        Case i < 3 Or (j = cell And j Mod 2)
                            FileCopy sFrom & i & ".tif", sTo & i & "-" & j & ".tif"
                        Case (j Mod 2) = 0
                            FileCopy sFrom & i * 11 & ".tif", sTo & i * 11 & "-" & j \ 2 & ".tif"
                    End Select
                Next
            Next
        Next
    End With
    If MsgBox("Готово!" & vbLf & "Открыть папку?", 36) = 6 Then Shell "explorer """ & sPath2 & """", 1
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 23.01.2018 в 17:57
олежа525 Дата: Среда, 24.01.2018, 14:55 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
krosav4ig, Огромное спасибо!
Подскажи пожалуйста,а как сделать чтобы скрипт работал когда в табличке данные берутся с другой табл)
ну т.е. там написано не какое то определенное значение,а вот так"=Лист1!K3" ,и с формулами тоже не работает.
 
Ответить
Сообщениеkrosav4ig, Огромное спасибо!
Подскажи пожалуйста,а как сделать чтобы скрипт работал когда в табличке данные берутся с другой табл)
ну т.е. там написано не какое то определенное значение,а вот так"=Лист1!K3" ,и с формулами тоже не работает.

Автор - олежа525
Дата добавления - 24.01.2018 в 14:55
krosav4ig Дата: Среда, 24.01.2018, 16:06 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
можно так
[vba]
Код
Sub Copfyiles()
    Const sPath1$ = "d:\layout\"
    Dim S$, sPath2$, sFrom$, sTo$
    Dim cell As Range, r As Range, i%, j%, n
    sPath2 = CreateObject("Shell.Application").Namespace(0).self.path & "\" & [G2] & "\"
    If Dir(sPath2, 16) = "" Then MkDir sPath2
    On Error Resume Next
    With [A2].CurrentRegion
        With .Offset(1, 1)
            Set r = .SpecialCells(xlCellTypeFormulas, 1)
            If r Is Nothing Then
                Set r = .SpecialCells(xlCellTypeConstants, 1)
            Else
                Set r = Union(r, .SpecialCells(xlCellTypeConstants, 1))
            End If
            If r Is Nothing Then Exit Sub
        End With
        For Each cell In r.Cells
            S = Intersect(cell.EntireColumn, .Rows(1)) & "\" & Intersect(cell.EntireRow, .Columns(1)) & "\"
            sFrom = sPath1 & S
            sTo = sPath2 & Replace(S, "\", "_")
            For i = 1 To 5
                For j = 1 To cell
                    Select Case True
                        Case i < 3 Or (j = cell And j Mod 2)
                            FileCopy sFrom & i & ".tif", sTo & i & "-" & j & ".tif"
                        Case (j Mod 2) = 0
                            FileCopy sFrom & i * 11 & ".tif", sTo & i * 11 & "-" & j \ 2 & ".tif"
                    End Select
                Next
            Next
        Next
    End With
    Set r = Nothing
    If MsgBox("Готово!" & vbLf & "Открыть папку?", 36) = 6 Then Shell "explorer """ & sPath2 & """", 1
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 24.01.2018, 16:34
 
Ответить
Сообщениеможно так
[vba]
Код
Sub Copfyiles()
    Const sPath1$ = "d:\layout\"
    Dim S$, sPath2$, sFrom$, sTo$
    Dim cell As Range, r As Range, i%, j%, n
    sPath2 = CreateObject("Shell.Application").Namespace(0).self.path & "\" & [G2] & "\"
    If Dir(sPath2, 16) = "" Then MkDir sPath2
    On Error Resume Next
    With [A2].CurrentRegion
        With .Offset(1, 1)
            Set r = .SpecialCells(xlCellTypeFormulas, 1)
            If r Is Nothing Then
                Set r = .SpecialCells(xlCellTypeConstants, 1)
            Else
                Set r = Union(r, .SpecialCells(xlCellTypeConstants, 1))
            End If
            If r Is Nothing Then Exit Sub
        End With
        For Each cell In r.Cells
            S = Intersect(cell.EntireColumn, .Rows(1)) & "\" & Intersect(cell.EntireRow, .Columns(1)) & "\"
            sFrom = sPath1 & S
            sTo = sPath2 & Replace(S, "\", "_")
            For i = 1 To 5
                For j = 1 To cell
                    Select Case True
                        Case i < 3 Or (j = cell And j Mod 2)
                            FileCopy sFrom & i & ".tif", sTo & i & "-" & j & ".tif"
                        Case (j Mod 2) = 0
                            FileCopy sFrom & i * 11 & ".tif", sTo & i * 11 & "-" & j \ 2 & ".tif"
                    End Select
                Next
            Next
        Next
    End With
    Set r = Nothing
    If MsgBox("Готово!" & vbLf & "Открыть папку?", 36) = 6 Then Shell "explorer """ & sPath2 & """", 1
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 24.01.2018 в 16:06
олежа525 Дата: Среда, 24.01.2018, 16:17 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
krosav4ig, к сожалению не сработало,вот пример
информация берется с Листа1,ваш скрипт на последней странице.
К сообщению приложен файл: v2.xlsm (82.0 Kb)
 
Ответить
Сообщениеkrosav4ig, к сожалению не сработало,вот пример
информация берется с Листа1,ваш скрипт на последней странице.

Автор - олежа525
Дата добавления - 24.01.2018 в 16:17
krosav4ig Дата: Среда, 24.01.2018, 16:36 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Немного переписал макрос в 5 посте
Цитата олежа525, 24.01.2018 в 16:17, в сообщении № 6 ()
не сработало

странно, у меня все нормально отрабатывает, создается 17 файлов
Upd.
А, вот в чем дело, я запускал макрос из VBE, для того чтобы работало, нужно переназначить макрос для фигуры на листе Rip (2)
К сообщению приложен файл: 4107869.xlsm (81.6 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 24.01.2018, 16:41
 
Ответить
СообщениеНемного переписал макрос в 5 посте
Цитата олежа525, 24.01.2018 в 16:17, в сообщении № 6 ()
не сработало

странно, у меня все нормально отрабатывает, создается 17 файлов
Upd.
А, вот в чем дело, я запускал макрос из VBE, для того чтобы работало, нужно переназначить макрос для фигуры на листе Rip (2)

Автор - krosav4ig
Дата добавления - 24.01.2018 в 16:36
олежа525 Дата: Среда, 24.01.2018, 17:42 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
krosav4ig, Заработало,спасибо!
 
Ответить
Сообщениеkrosav4ig, Заработало,спасибо!

Автор - олежа525
Дата добавления - 24.01.2018 в 17:42
  • Страница 1 из 1
  • 1
Поиск:

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