Здравствуйте! Помогите решить проблему копирования файлов из общей папки в много других папок названия которых указаны в таблице. Составил код, но он дает ошибку. [vba]
Код
Sub перенос_файлов Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String Dim sDirName As String Dim sPosName As String i_n& = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To i_n sPosName = Cells(i, 5) strDirName = Cells(i, 1) sFileName = "F:\Макросы\Пример\" & sPosName sNewFileName = "F:\Макросы\Пример\" & sDirName & "\" & sPosName If Cells(i, 5) = "" Then i = i + 1 Else Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(sFileName) objFile.Move sNewFileName End If Next End Sub
[/vba] все файлы находятся в одной папке и для каждой позиции создана своя куда и надо скопировать эти файлы как указано в таблице Может быть есть способ проще?
Здравствуйте! Помогите решить проблему копирования файлов из общей папки в много других папок названия которых указаны в таблице. Составил код, но он дает ошибку. [vba]
Код
Sub перенос_файлов Dim objFSO As Object, objFile As Object Dim sFileName As String, sNewFileName As String Dim sDirName As String Dim sPosName As String i_n& = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To i_n sPosName = Cells(i, 5) strDirName = Cells(i, 1) sFileName = "F:\Макросы\Пример\" & sPosName sNewFileName = "F:\Макросы\Пример\" & sDirName & "\" & sPosName If Cells(i, 5) = "" Then i = i + 1 Else Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.GetFile(sFileName) objFile.Move sNewFileName End If Next End Sub
[/vba] все файлы находятся в одной папке и для каждой позиции создана своя куда и надо скопировать эти файлы как указано в таблице Может быть есть способ проще? CDorian18092044
For i = 2 To i_n If Cells(i, 5) <> "" Then sPosName = Cells(i, 5) strDirName = Cells(i, 1) sFileName = "F:\Макросы\Пример\" & sPosName sNewFileName = "F:\Макросы\Пример\" & sDirName & "\" & sPosName FileCopy sFileName, sNewFileName End If Next
[/vba]
Попробуйте так. Не проверял. [vba]
Код
For i = 2 To i_n If Cells(i, 5) <> "" Then sPosName = Cells(i, 5) strDirName = Cells(i, 1) sFileName = "F:\Макросы\Пример\" & sPosName sNewFileName = "F:\Макросы\Пример\" & sDirName & "\" & sPosName FileCopy sFileName, sNewFileName End If Next
Ну вот. А я и не заметил, что переменная определяется как strDirName а используетя как sDirName. Правильно так надо бы. [vba]
Код
For i = 2 To i_n If Cells(i, 5) <> "" Then sPosName = Cells(i, 5) sDirName = Cells(i, 1) sFileName = "F:\Макросы\Пример\" & sPosName sNewFileName = "F:\Макросы\Пример\" & sDirName & "\" & sPosName FileCopy sFileName, sNewFileName End If Next
[/vba]
Ну вот. А я и не заметил, что переменная определяется как strDirName а используетя как sDirName. Правильно так надо бы. [vba]
Код
For i = 2 To i_n If Cells(i, 5) <> "" Then sPosName = Cells(i, 5) sDirName = Cells(i, 1) sFileName = "F:\Макросы\Пример\" & sPosName sNewFileName = "F:\Макросы\Пример\" & sDirName & "\" & sPosName FileCopy sFileName, sNewFileName End If Next