Копирование файлов из папки в новые из списка, который не совсем совпадает с именами файлов - PullRequest
0 голосов
/ 02 июля 2018

У меня тут сложный вопрос, и я нигде не могу найти помощь.

У меня есть несколько списков номеров деталей, и мне нужно скопировать файлы технических чертежей для этих номеров деталей в определенные папки.

Основная проблема заключается в том, что хотя имена файлов соответствуют списку, за исключением версии чертежа (всегда есть _001 или _002 и т. Д. После номера детали и перед расширением), это не точное совпадение.

Итак, в основном, мне нужно скопировать файлы из списка Excel, но я должен указать любой метод / программное обеспечение, которое я использую, чтобы рассмотреть последнюю версию чертежей на основе суффикса имени файла. Какой будет лучший (и самый простой) способ сделать это?

У меня нет доступа к инструментам программирования на моем рабочем компьютере за пределами Windows / Office, и я не уверен, что использование VBA будет решением.

Может кто-нибудь помочь мне с задачей?

1 Ответ

0 голосов
/ 05 июля 2018

Итак, после долгих раскопок мне удалось найти решение. Я знаю, что все это может быть сделано в коде, но я все еще учусь, и это может помочь кому-то с той же проблемой 1. Я открыл CMD, зашел в папку, в которой находились файлы, и набрал dir /b>list.txt. Это создало список TXT со всеми файлами в папке. 2. Я открываю txt-файл в Excel и настраиваю его так, чтобы у меня было одно имя файла на ячейку. 3. В исходном списке номеров деталей я добавил столбец справа и добавил к нему «X» только для vlookup. 4. Я использовал vlookup в списке файлов для списка деталей, чтобы увидеть, какие файлы мне потребуются. 5. Я удалил все имена файлов из списка, которых не было в списке деталей. 6. Я отсортировал имена файлов по алфавиту. 7. Я извлек номер детали из имени файла в отдельную ячейку (A3) =left(A1,14). 8. Сделал =A3=A4. Независимо от того, что возвращено «ИСТИНА», было удалено (если номер детали в одной строке был равен номеру в строке ниже, это означало, что это был тот же чертеж в более старой версии). 9. С помощью приведенного ниже кода в Excel (VBA) скопируйте файлы из исходной папки в новую папку на основе списка, который я собрал.

Sub copyfiles()
Dim xRg As Range, xCell As Range
Dim xSFileDlg As FileDialog, xDFileDlg As FileDialog
Dim xSPathStr As Variant, xDPathStr As Variant
Dim xVal As String
On Error Resume Next
Set xRg = Application.InputBox("Click on the column with the file names:", "File copier", ActiveWindow.RangeSelection.Address, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xSFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xSFileDlg.Title = "Folder to copy from:"
If xSFileDlg.Show <> -1 Then Exit Sub
xSPathStr = xSFileDlg.SelectedItems.Item(1) & "\"
Set xDFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
xDFileDlg.Title = "Folder to copy to:"
If xDFileDlg.Show <> -1 Then Exit Sub
xDPathStr = xDFileDlg.SelectedItems.Item(1) & "\"
For Each xCell In xRg
    xVal = xCell.Value
    If TypeName(xVal) = "String" And xVal <> "" Then
        FileCopy xSPathStr & xVal, xDPathStr & xVal
    End If
Next

End Sub

...