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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование файлов из одной папки в другую по условию (Макросы/Sub)
Копирование файлов из одной папки в другую по условию
Anis625 Дата: Среда, 16.01.2019, 21:53 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
И снова здравствуйте!

Пытаюсь макросом скопировать из папки "Откуда" (в т.ч. всех подпапках) в папку "Куда" файлы Excel по условию (наличию в названии символа, например "+").

Нашел макрос который копирует все файлы Excel:
[vba]
Код
Sub cop()

Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "C:\Users\Мвидео\Desktop\Откуда"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If Right(iFile.Name, 5) = ".xlsx" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]

Но он не решает 2 вопроса:

1) Необходимо копирование файлов во всех подуровнях папки "Откда", т.е. пока берет верхний уровень только.

2) Необходимо копирование файлов Excel имя файлов которые содержат символ +

Первую часть даже не смог найти что-то подходящее как исправить.

Вторую часть попытался исправить 8 строку:
[vba]
Код
If fso.GetFileName(fil.Path) Like "*+*.xlsx*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]
Не срабатывает.

Подскажите, пожалуйста, где нужно правильно допилить?

P.S. можете подсказать полезные ресурсы (на русском) со всеми кодами и их синтаксисами для обучения. Один нашел (ссылки на внешний ресурс нельзя выкладывать) но синтаксис выложен без примеров.


Сообщение отредактировал Anis625 - Среда, 16.01.2019, 21:54
 
Ответить
СообщениеИ снова здравствуйте!

Пытаюсь макросом скопировать из папки "Откуда" (в т.ч. всех подпапках) в папку "Куда" файлы Excel по условию (наличию в названии символа, например "+").

Нашел макрос который копирует все файлы Excel:
[vba]
Код
Sub cop()

Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "C:\Users\Мвидео\Desktop\Откуда"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If Right(iFile.Name, 5) = ".xlsx" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]

Но он не решает 2 вопроса:

1) Необходимо копирование файлов во всех подуровнях папки "Откда", т.е. пока берет верхний уровень только.

2) Необходимо копирование файлов Excel имя файлов которые содержат символ +

Первую часть даже не смог найти что-то подходящее как исправить.

Вторую часть попытался исправить 8 строку:
[vba]
Код
If fso.GetFileName(fil.Path) Like "*+*.xlsx*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]
Не срабатывает.

Подскажите, пожалуйста, где нужно правильно допилить?

P.S. можете подсказать полезные ресурсы (на русском) со всеми кодами и их синтаксисами для обучения. Один нашел (ссылки на внешний ресурс нельзя выкладывать) но синтаксис выложен без примеров.

Автор - Anis625
Дата добавления - 16.01.2019 в 21:53
krosav4ig Дата: Среда, 16.01.2019, 22:47 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2140
Репутация: 892 ±
Замечаний: 0% ±

Excel 2007,2010,2013
Здравствуйте
fso.GetFileName(fil.Path)

For Each iFile In Folder.Files

[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
СообщениеЗдравствуйте
fso.GetFileName(fil.Path)

For Each iFile In Folder.Files

[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]

Автор - krosav4ig
Дата добавления - 16.01.2019 в 22:47
Anis625 Дата: Среда, 16.01.2019, 22:59 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
krosav4ig,

1 и 3 рекомендацию учел. Во 2-й не нашел отличий от своего варианта.

Запускаю макрос: Object required
=(


Сообщение отредактировал Anis625 - Среда, 16.01.2019, 22:59
 
Ответить
Сообщениеkrosav4ig,

1 и 3 рекомендацию учел. Во 2-й не нашел отличий от своего варианта.

Запускаю макрос: Object required
=(

Автор - Anis625
Дата добавления - 16.01.2019 в 22:59
krosav4ig Дата: Среда, 16.01.2019, 23:15 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2140
Репутация: 892 ±
Замечаний: 0% ±

Excel 2007,2010,2013
это были не рекомендации, а цитаты из серии "найди 2 отличия" :)
у вас в коде [vba]
Код
For Each iFile In Folder.Files
[/vba] задана переменная iFile, а внутри цикла почему-то пишете fil (видимо, не заметили при копировании из другого макроса)
вам нужно было просто заменить в вашем макросе 8 строку на ту, что я написал
[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]

[p.s.]Получение списка файлов в папке и подпапках средствами VBA


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

Сообщение отредактировал krosav4ig - Среда, 16.01.2019, 23:18
 
Ответить
Сообщениеэто были не рекомендации, а цитаты из серии "найди 2 отличия" :)
у вас в коде [vba]
Код
For Each iFile In Folder.Files
[/vba] задана переменная iFile, а внутри цикла почему-то пишете fil (видимо, не заметили при копировании из другого макроса)
вам нужно было просто заменить в вашем макросе 8 строку на ту, что я написал
[vba]
Код
If iFile.Name Like "*+*.xls*" Then iFile.Copy "C:\Users\Мвидео\Desktop\Куда" & "\" & iFile.Name
[/vba]

[p.s.]Получение списка файлов в папке и подпапках средствами VBA

Автор - krosav4ig
Дата добавления - 16.01.2019 в 23:15
Anis625 Дата: Среда, 16.01.2019, 23:25 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
krosav4ig,

Крутяк. С "+" скопировал как надо. Я пока чайник по макросам. Пока не очень могу читать правильно макросы. Спасибо за правку.

Только макрос срабатывает на указанную папку. Внутри в подпапках не ищет макрос. Уровней может много.

Можете подсказать? В интернете подходящее не нашел
 
Ответить
Сообщениеkrosav4ig,

Крутяк. С "+" скопировал как надо. Я пока чайник по макросам. Пока не очень могу читать правильно макросы. Спасибо за правку.

Только макрос срабатывает на указанную папку. Внутри в подпапках не ищет макрос. Уровней может много.

Можете подсказать? В интернете подходящее не нашел

Автор - Anis625
Дата добавления - 16.01.2019 в 23:25
Anis625 Дата: Среда, 16.01.2019, 23:25 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
krosav4ig,

Упс не заметил вашу ссылку
 
Ответить
Сообщениеkrosav4ig,

Упс не заметил вашу ссылку

Автор - Anis625
Дата добавления - 16.01.2019 в 23:25
Anis625 Дата: Среда, 16.01.2019, 23:33 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
krosav4ig,

Круууууто. Вот эту часть
[vba]
Код
Dim coll As Collection, ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%

    ПутьКПапке$ = [c1]    ' берём из ячейки c1
    МаскаПоиска$ = [c2]    ' берём из ячейки c2
    ГлубинаПоиска% = Val([c3])    ' берём из ячейки c3
    If ГлубинаПоиска% = 0 Then ГлубинаПоиска% = 999    ' без ограничения по глубине

    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%)
[/vba]

если добавить в свою задачу было бы супер но сам поженить два макроса не смогу =(


Сообщение отредактировал Anis625 - Среда, 16.01.2019, 23:34
 
Ответить
Сообщениеkrosav4ig,

Круууууто. Вот эту часть
[vba]
Код
Dim coll As Collection, ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%

    ПутьКПапке$ = [c1]    ' берём из ячейки c1
    МаскаПоиска$ = [c2]    ' берём из ячейки c2
    ГлубинаПоиска% = Val([c3])    ' берём из ячейки c3
    If ГлубинаПоиска% = 0 Then ГлубинаПоиска% = 999    ' без ограничения по глубине

    ' считываем в колекцию coll нужные имена файлов
    Set coll = FilenamesCollection(ПутьКПапке$, МаскаПоиска$, ГлубинаПоиска%)
[/vba]

если добавить в свою задачу было бы супер но сам поженить два макроса не смогу =(

Автор - Anis625
Дата добавления - 16.01.2019 в 23:33
sboy Дата: Четверг, 17.01.2019, 09:56 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 722 ±
Замечаний: 0% ±

Excel 2010
Вот еще ссылка там второй код со всеми подпапками, замените действие с файлом на свое


Яндекс: 410016850021169
 
Ответить
СообщениеВот еще ссылка там второй код со всеми подпапками, замените действие с файлом на свое

Автор - sboy
Дата добавления - 17.01.2019 в 09:56
Anis625 Дата: Четверг, 17.01.2019, 10:10 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
sboy,

Спасибо Вам большое. Буду попробовать =)
 
Ответить
Сообщениеsboy,

Спасибо Вам большое. Буду попробовать =)

Автор - Anis625
Дата добавления - 17.01.2019 в 10:10
Anis625 Дата: Четверг, 17.01.2019, 19:09 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
=(

Перепробовал разные варианты. Последний вариант sboy, даже на проверке макроса как есть без изменения у меня долго макрос отрабатывал мигая и потом завис Excel
 
Ответить
Сообщение=(

Перепробовал разные варианты. Последний вариант sboy, даже на проверке макроса как есть без изменения у меня долго макрос отрабатывал мигая и потом завис Excel

Автор - Anis625
Дата добавления - 17.01.2019 в 19:09
Anis625 Дата: Четверг, 17.01.2019, 19:11 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
Очередная попытка
[vba]
Код
Sub cop2()

Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "D:\PQ\Копирование между папками\Откуда"
Dim sFolder As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 2) = Application.PathSeparator, "", Application.PathSeparator)
    Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If iFile.Name Like "*+*.xls*" Then iFile.Copy "D:\PQ\Копирование между папками\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]

=( не срабатывает
 
Ответить
СообщениеОчередная попытка
[vba]
Код
Sub cop2()

Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "D:\PQ\Копирование между папками\Откуда"
Dim sFolder As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = False Then Exit Sub
        sFolder = .SelectedItems(1)
    End With
    sFolder = sFolder & IIf(Right(sFolder, 2) = Application.PathSeparator, "", Application.PathSeparator)
    Application.ScreenUpdating = False
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
For Each iFile In Folder.Files
If iFile.Name Like "*+*.xls*" Then iFile.Copy "D:\PQ\Копирование между папками\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]

=( не срабатывает

Автор - Anis625
Дата добавления - 17.01.2019 в 19:11
Anis625 Дата: Четверг, 17.01.2019, 19:26 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
Добавил строки:

[vba]
Код
Sub cop3()

Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "D:\PQ\Копирование между папками\Откуда"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
If iFile.Name Like "*+*.xls*" Then iFile.Copy "D:\PQ\Копирование между папками\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]

Запускаю макрос: Object required
=(


Сообщение отредактировал Anis625 - Четверг, 17.01.2019, 19:26
 
Ответить
СообщениеДобавил строки:

[vba]
Код
Sub cop3()

Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "D:\PQ\Копирование между папками\Откуда"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
If iFile.Name Like "*+*.xls*" Then iFile.Copy "D:\PQ\Копирование между папками\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]

Запускаю макрос: Object required
=(

Автор - Anis625
Дата добавления - 17.01.2019 в 19:26
Hugo Дата: Четверг, 17.01.2019, 21:21 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2877
Репутация: 642 ±
Замечаний: 0% ±

iFile - это кто?


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеiFile - это кто?

Автор - Hugo
Дата добавления - 17.01.2019 в 21:21
Anis625 Дата: Четверг, 17.01.2019, 22:20 | Сообщение № 14
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
Hugo,
В интернете нашел: iFile - это название файла - донора
Я думаю Вы лучше меня знаете.
Не силен в написании макросов. Стараюсь найти подходящие макросы и адаптировать под свои вопросы. Когда захожу в тупик обращаюсь за помощью. Я по формулам Excel пока только.
 
Ответить
СообщениеHugo,
В интернете нашел: iFile - это название файла - донора
Я думаю Вы лучше меня знаете.
Не силен в написании макросов. Стараюсь найти подходящие макросы и адаптировать под свои вопросы. Когда захожу в тупик обращаюсь за помощью. Я по формулам Excel пока только.

Автор - Anis625
Дата добавления - 17.01.2019 в 22:20
Hugo Дата: Четверг, 17.01.2019, 23:36 | Сообщение № 15
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2877
Репутация: 642 ±
Замечаний: 0% ±

Судя по коду - iFile As Object, и это всё. Что за объект, ничего Вы не указали. И то, что Вам явно пишут: Object required ни на что не намекает?
А ведь всего лишь одним постом выше всё есть... Внимательнее, тщательнее нужно.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Четверг, 17.01.2019, 23:38
 
Ответить
СообщениеСудя по коду - iFile As Object, и это всё. Что за объект, ничего Вы не указали. И то, что Вам явно пишут: Object required ни на что не намекает?
А ведь всего лишь одним постом выше всё есть... Внимательнее, тщательнее нужно.

Автор - Hugo
Дата добавления - 17.01.2019 в 23:36
RAN Дата: Четверг, 17.01.2019, 23:40 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 5105
Репутация: 1018 ±
Замечаний: 0% ±

2010
Тыкать вас носом в одно и то-же в пределах одной темы - это перебор. Нет? (№№2 и 4)
Для того, чтобы у файла было имя, которое может иметь, или не иметь что-то, неплохо бы иметь и сам файл. Не находите?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеТыкать вас носом в одно и то-же в пределах одной темы - это перебор. Нет? (№№2 и 4)
Для того, чтобы у файла было имя, которое может иметь, или не иметь что-то, неплохо бы иметь и сам файл. Не находите?

Автор - RAN
Дата добавления - 17.01.2019 в 23:40
Anis625 Дата: Четверг, 17.01.2019, 23:59 | Сообщение № 17
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
RAN,
неплохо бы иметь и сам файл. Не находите?


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

Но правила есть правила =) Добавил.
К сообщению приложен файл: __.xlsb(15.0 Kb)


Сообщение отредактировал Anis625 - Пятница, 18.01.2019, 00:02
 
Ответить
СообщениеRAN,
неплохо бы иметь и сам файл. Не находите?


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

Но правила есть правила =) Добавил.

Автор - Anis625
Дата добавления - 17.01.2019 в 23:59
Anis625 Дата: Пятница, 18.01.2019, 00:05 | Сообщение № 18
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
RAN,

Тыкать вас носом в одно и то-же в пределах одной темы - это перебор. Нет? (№№2 и 4)


Согласен, что это перебор когда в этом хорошо разбираться. Учусь.
А Вы когда первый сели за руль велосипеда, автомобиля у вас сразу хорошо получилось ехать? Или вам тоже говорили >1 раза как правильно нужно это делать?
 
Ответить
СообщениеRAN,

Тыкать вас носом в одно и то-же в пределах одной темы - это перебор. Нет? (№№2 и 4)


Согласен, что это перебор когда в этом хорошо разбираться. Учусь.
А Вы когда первый сели за руль велосипеда, автомобиля у вас сразу хорошо получилось ехать? Или вам тоже говорили >1 раза как правильно нужно это делать?

Автор - Anis625
Дата добавления - 18.01.2019 в 00:05
krosav4ig Дата: Пятница, 18.01.2019, 00:08 | Сообщение № 19
Группа: Друзья
Ранг: Старожил
Сообщений: 2140
Репутация: 892 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Option Explicit
Sub test()
    Dim sInPath$, sOutPath$, oFSO As Object
    
    sInPath = "C:\Users\Мвидео\Desktop\Откуда"
    sOutPath = "C:\Users\Мвидео\Desktop\Куда"
    
    Set oFSO = CreateObject("scripting.filesystemobject")
    
    CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
        
    Set oFSO = Nothing
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
    Dim oFile As Object, oFolder As Object
    Set oFolder = oFSO.GetFolder(sCopyFrom)
    For Each oFile In oFolder.Files
        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
    Next
    For Each oFolder In oFolder.SubFolders
        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
    Next
    Set oFile = Nothing
    Set oFolder = Nothing
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщение[vba]
Код
Option Explicit
Sub test()
    Dim sInPath$, sOutPath$, oFSO As Object
    
    sInPath = "C:\Users\Мвидео\Desktop\Откуда"
    sOutPath = "C:\Users\Мвидео\Desktop\Куда"
    
    Set oFSO = CreateObject("scripting.filesystemobject")
    
    CopyRecursive oFSO, sInPath, sOutPath, "*.xls*"
        
    Set oFSO = Nothing
End Sub
Private Sub CopyRecursive(ByRef oFSO As Object, sCopyFrom$, sCopyTo$, sMask$)
    Dim oFile As Object, oFolder As Object
    Set oFolder = oFSO.GetFolder(sCopyFrom)
    For Each oFile In oFolder.Files
        If oFile.Name Like "*+*.xls*" Then oFile.Copy sCopyTo & "\" & oFile.Name
    Next
    For Each oFolder In oFolder.SubFolders
        CopyRecursive oFSO, oFolder.Path, sCopyTo, sMask
    Next
    Set oFile = Nothing
    Set oFolder = Nothing
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 18.01.2019 в 00:08
Anis625 Дата: Пятница, 18.01.2019, 00:14 | Сообщение № 20
Группа: Проверенные
Ранг: Обитатель
Сообщений: 278
Репутация: 5 ±
Замечаний: 0% ±

Excel 2013
Hugo,
Судя по коду - iFile As Object, и это всё. Что за объект, ничего Вы не указали. И то, что Вам явно пишут: Object required ни на что не намекает?


Ребяты, но ведь этот код в таком виде (с учетом правки krosav4ig, ):
Sub cop3()
[vba]
Код
Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "D:\PQ\Копирование между папками\Откуда"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
If iFile.Name Like "*+*.xls*" Then iFile.Copy "D:\PQ\Копирование между папками\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]
Работает же. Он только берет папку без учета подпапок в ней. Попросил помочь. Дали рекомендации. Не получилось. Покопался в интернете еще раз. Нашел как применять SubFolders. Добавил две строки:
[vba]
Код
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
[/vba]
Не работает. Обратился еще раз за помощью.

RAN, Hugo, Вы чего с двух сторон сразу. Что я не так сделал?
 
Ответить
СообщениеHugo,
Судя по коду - iFile As Object, и это всё. Что за объект, ничего Вы не указали. И то, что Вам явно пишут: Object required ни на что не намекает?


Ребяты, но ведь этот код в таком виде (с учетом правки krosav4ig, ):
Sub cop3()
[vba]
Код
Dim fso As Object, Folder As Object, iFile As Object, iPath$
iPath = "D:\PQ\Копирование между папками\Откуда"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Folder = fso.GetFolder(iPath)
If iFile.Name Like "*+*.xls*" Then iFile.Copy "D:\PQ\Копирование между папками\Куда" & "\" & iFile.Name
Next
Set iFile = Nothing
Set Folder = Nothing
Set fso = Nothing
End Sub
[/vba]
Работает же. Он только берет папку без учета подпапок в ней. Попросил помочь. Дали рекомендации. Не получилось. Покопался в интернете еще раз. Нашел как применять SubFolders. Добавил две строки:
[vba]
Код
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
[/vba]
Не работает. Обратился еще раз за помощью.

RAN, Hugo, Вы чего с двух сторон сразу. Что я не так сделал?

Автор - Anis625
Дата добавления - 18.01.2019 в 00:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копирование файлов из одной папки в другую по условию (Макросы/Sub)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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