Страницы: 1
RSS
Макрос копирования папки
 
Добрый день!
Подскажите, пожалуйста, в чем ошибка, не срабатывает макрос копирования папки:
Код
Sub Макрос3()
'
' Макрос3 Копировать_папку
     
    Dim fso As Object
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    fso.CopyFolder "C:\Users \ nakashidze.ll \ Desktop \ Макрос", "T:\Заявки на оплату\Реестр платежей\ЗАЯВКИ", 0
     
End Sub
Изменено: Liana_N - 06.04.2017 13:18:22
 
У вас 0 вместо имени куда копировать:
Простите, не заметил. Ошибка какая ?
Изменено: VSerg - 06.04.2017 13:02:45
 

Ошибка следующая:

Error '76'

Path not found

Путь к папкам указан верно, возможно есть ошибки в корректности написания символов?

 
Пробелы в пути точно не лишние ?
 
Убрала все лишние пробелы, теперь выдает другую ошибку:
Error '58':
File already exists

Но копирование не произошло и такой папки нет в пути назначения.
Код
Sub Макрос3()
'
' Макрос3 Копировать_папку
     
    Dim fso As Object
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    fso.CopyFolder "C:\Users\nakashidze.ll\Desktop\Макрос", "T:\Заявки на оплату\Реестр платежей\ЗАЯВКИ", 0
     
End Sub
 
Не верю :) VBA не ошибается в отличии от нас. В пути T:\Заявки на оплату\Реестр платежей наверняка есть папка ЗАЯВКИ.
Для эксперимента можете  ноль в конце заменить на 1 и существующий файл будет перезаписан. И тогда ошибку выдавать не должно.
Код
fso.CopyFolder "C:\Users\nakashidze.ll\Desktop\Макрос", "T:\Заявки на оплату\Реестр платежей\ЗАЯВКИ", 1
 
Ура, получилось!! :D Спасибо!
Скопировались все файлы, которые расположены в  папке "Макрос".
А возможно делать копию всей папки "Макрос" , а не только её содержимого?
 
Варианты от Климова П.Ю.
Код
iSource = "C:\Sales" 
iDestination = "C:\Archive2006" 

On Error GoTo ErrHandler 

With CreateObject("Scripting.FileSystemObject") 
     If .FolderExists(iSource) = True Then 
        .CopyFolder iSource, iDestination ', True 
     Else 
        MsgBox "Копирование невозможно, ввиду отсутствия папки", , "" 
     End If 
End With 

ErrHandler: 
If Err.Number <> 0 Then 
   MsgBox Err.Description, vbCritical, "" 
End If
и
Код
iSource = "C:\Sales" 
iDestination = "C:\Archive2006" 

On Error GoTo ErrHandler 

With CreateObject("Scripting.FileSystemObject") 
     If .FolderExists(iSource) = True Then 
        .GetFolder(iSource).Copy iDestination 'True 
     Else 
        MsgBox "Копирование невозможно, ввиду отсутствия папки", , "" 
     End If 
End With 

ErrHandler: 
If Err.Number <> 0 Then 
   MsgBox Err.Description, vbCritical, "" 
End If
 
Попробовала данный вариант, аналогично, копирует только содержимое папки. А не всю папку.
 
Потому, что вы папку МАКРОС переименовываете в папку ЗАЯВКИ. Попробуйте:
Код
iSource = "C:\Users\nakashidze.ll\Desktop\Макрос"
iDestination = "T:\Заявки на оплату\Реестр платежей\ЗАЯВКИ\Макрос"
 
И снова получилось:)Спасибо.
Ситуация следующая, папка в которую необходимо будет копировать будет одна и та же, без изменений ее путь:
T:\Заявки на оплату\Реестр платежей\ЗАЯВКИ\
А вот копируемая папка будет меняться.
 
Знака вопроса не вижу, но предполагаю, что ищете как указывать какую папку копировать. Прикрутите диалог выбора папки и считывайте имя выбранной в iSource:
Код
With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Выберите папку, файлы в которой нужно обработать"
        .ButtonName = "Выбрать"
        .AllowMultiSelect = False
        If .Show Then iSource = .SelectedItems(1) Else Exit Sub
End With
Страницы: 1
Читают тему
Наверх