мне нужно переместить ряд файлов на основе их содержимого. В идеале, это может быть вызвано в 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 (), которая позволяет мне указывать КАТАЛОГ, Источник и newname. Если бы я мог просто получить функцию поиска, работающую, чтобы найти текстовую строку в другом поле, я все настроен.
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
спасибо