Мне нужно вручную переместить более 30 000 файлов, и я пытаюсь понять, как я могу это сделать с помощью VBA. Мне удалось получить все имена файлов путем извлечения имени каталога VBA, но я борюсь с процессом передачи.
Мой файл Excel выглядит следующим образом:
Столбец A - «Имя файла»
Пример -> «Заголовок файла» .pdf (Может быть, другой файл ext.)
Столбец B - «Каталог исходных папок»
Пример -> C: \ Users \ "user"\ folder \ folder \ folder \ EFT \ Country_COMPLETE \ Wave 3 \ folder \ SOURCEFOLDER
Столбец C -" Каталог целевой папки "
Пример -> C: \ Users \" user "\ folder \папка \ папка \ EFT \ Country_COMPLETE \ Wave 3 \ папка \ папка \ DESTINATIONFOLDER
Я продолжаю получать среду выполнения 1004, даже если все мои объекты указаны.
Sub FileTranspose()
Dim c As Excel.Range
Dim strName As String
Dim strDir As String
With Worksheets("Sheet1")
'// Loop from row 2 to last used cell in Col A
For Each c In **Sheet1**.Range("A2").Resize(**Sheet1**.Range("A" & Rows.Count).End(xlUp).Row - 1)
'// If the cell contains any text...
If c.Value <> vbNullString Then
'// And the 2 cells to the right contain some text...
If c.Offset(0, 1).Value <> vbNullString And c.Offset(0, 2).Value <> vbNullString Then
'// Make up the full source file name, includes path.
strName = c.Offset(0, 1).Value & IIf(Right$(c.Offset(0, 1).Value, 1) <> "\", "\", vbNullString) & c.Value
'// Same for destination Directory name
strDir = c.Offset(0, 2).Value & IIf(Right$(c.Offset(0, 2).Value, 1) <> "\", "\", vbNullString)
'// If the file to copy exists...
If Dir(strName) <> vbNullString Then
'// And the Destination directory exists...
If Dir(strDir, vbDirectory) <> vbNullString Then
'// Copy it.
FileCopy strName, strDir & c.Value
'// Delete
Kill strName
End If
End If
End If
End If
Next
End With
End Sub
Цель будетчтобы автоматически открыть столбец B, найдите файл в столбце A, а затем вставьте в столбец C.
Я хотел бы УДАЛИТЬ файл из исходной папки после его копирования.