VBA копирует все файлы в папку

Мой макрос работает хорошо с 2 месяцев, но теперь мне нужна помощь для другой проблемы. Мы управляем контроллером на нашем сервере, который отправляет письма нашему клиенту с прилагаемым pdf. Теперь этот контроллер и мой макрос работают иногда одновременно, и когда мой макрос создает pdf-файлы, контроллер хочет его отправить, но не может этого сделать, потому что он уже создан. Теперь я подумал, что макрос может сохранить PDF в другую папку, после чего он скопирует все файлы в нужную папку для отправки.

Мой код:

Function Copy() Dim MyFile2 As Sting Dim myPath2 As String, myPath3 As String myPath2 = "L:\Host_Export\Pdf-Kundenmail\Test\" myPath3 = "L:\Host_Export\Pdf-Kundenmail\" MyFile2 = Dir(myPath2 & "*.*") Do If MyFile2 = "" Then Exit Do FileCopy myPath2 & MyFile2, myPath3 & MyFile2 End If myFile2 = Dir Loop End Function 

Но если я запустил его, появится ошибка: error on compilation userdefined typ could not be defined. например: https://i0.wp.com/www.port135.com/wp-content/uploads/2012/08/error1-1.png . Я alredy googled, но не понимаю, как настроить или импортировать что-то, чтобы исправить эту проблему.

Ваш код не будет компилироваться, потому что, как сказал @ user3598756, вы неправильно указали строку. Однако, чтобы улучшить вашу форму, используйте цикл do while, чтобы комбинировать операторы if и do следующим образом:

 Function Copy() Dim MyFile2 As String Dim myPath2 As String, myPath3 As String myPath2 = "L:\Host_Export\Pdf-Kundenmail\Test\" myPath3 = "L:\Host_Export\Pdf-Kundenmail\" MyFile2 = Dir(myPath2 & "*.*") Do while MyFile2 <> "" FileCopy myPath2 & MyFile2, myPath3 & MyFile2 myFile2 = Dir Loop End Function 

Следующий суб копирует все файлы из исходной папки в папку назначения.

  Sub AllFiles() Dim FSO As Object Dim FromPath As String Dim ToPath As String FromPath = "C:\Users\Alam\Music\Awlad Hossain" 'Souece Folder ToPath = "C:\MyExcelFiles" 'Destination folder If Right(FromPath, 1) = "\" Then FromPath = Left(FromPath, Len(FromPath) - 1) End If If Right(ToPath, 1) = "\" Then ToPath = Left(ToPath, Len(ToPath) - 1) End If Set FSO = CreateObject("scripting.filesystemobject") If FSO.FolderExists(FromPath) = False Then MsgBox FromPath & " doesn't exist" Exit Sub End If FSO.CopyFolder Source:=FromPath, Destination:=ToPath MsgBox "You can find the files and subfolders from " & FromPath & " in " & ToPath End Sub 

Подробнее здесь:

Давайте будем гением компьютера.