Мне нужно переместить ряд файлов в зависимости от их содержания. В идеале это может быть вызвано изнутри Excel, так как пользователь импортирует файлы. Я могу сделать это с помощью простого сценария оболочки Unix следующим образом:
#!/bin/bash
for F in $(ls *.csv)
  do  
   while read N W
   do
     if grep -q "$W" "$F"
     then
      NEW=${N:0:50}.csv
        echo $F $NEW
        cp "$F" WORKING/$NEW
        break
      fi
  done <  ../Documents/ASSET\ Sale/bin/fixfilenames_namemap.txt
done
cp Name*.csv WORKING/name_name2.csv
Формат файла fixfilesnames_namemap.txt:
newfilename text search string
newfilename2 text search string number two
Обратите внимание, что последняя строка представляет собой kludge, так как этот файл имеет несколько пробелов в имени, и поэтому он не может быть правильно вызван в цикле, поэтому я просто перемещаю один файл.
Мне бы хотелось, чтобы выполнялась подпрограмма VBA или, возможно, простой файл .bat, который я мог бы запускать из Excel 2016.
В настоящее время я работаю с функцией RenameFile(), которая позволяет мне указывать каталог, источник и новое имя. Если бы я мог просто заставить функцию поиска работать, чтобы найти текстовую строку в другом поле, я бы все сделал.
Public Function RenameFile()
Dim src As String, dst As String, fl As String
Dim rfl As String
'Folder
src = Range("F4")
'File name
fl = Range("G4")
'Rename file
rfl = Range("Assets_Eligible_Destination")
On Error Resume Next
Name src & "\" & fl As src & "\" & rfl
If Err.Number <> 0 Then
    MsgBox "Error: " & src & "\" & rfl
End If
On Error GoTo 0
End Function
Спасибо
