Перемещение списка определенных файлов из папки в папку в VBA - PullRequest
0 голосов
/ 02 октября 2019

Мне нужно вручную переместить более 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.

Я хотел бы УДАЛИТЬ файл из исходной папки после его копирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...