У меня есть сотни файлов в папке с символом 口 в имени файла. В конечном итоге я хотел бы переместить файлы с помощью макроса vba. У меня есть второй макрос для замены символов в именах файлов, но он не работает для замены 口. VBA заменяет 口 знаком вопроса, поэтому макрос прерывается при попытке переименовать его. Как мне обойти это?
пример имени файла: Calaloo - Direct Brands 2010q4 `92661 ck 口 us 口 Stmt 1.45 PB 8.69 EB 10.14 -mm 56569.pdf
(обновлено для включения кода Unicode и использования FSO)
Переименовать код макроса:
Sub rename_files_replace_character_FSO()
Dim FSO As Scripting.FileSystemObject, fldr As Folder, f As File, ts As TextStream
Dim sPath, sOld, sNew, sNewFile As String
Dim wbMain As Workbook
Dim wsMain As Worksheet
Set wbMain = ThisWorkbook
Set wsMain = wbMain.Worksheets("Rename Files")
Set FSO = New Scripting.FileSystemObject
sPath = wsMain.Range("B2").Value
If Right(sPath, 1) <> "\" Then sPath = sPath + "\"
sOld = wsMain.Range("C2").Value
sNew = wsMain.Range("D2").Value
Set fldr = FSO.GetFolder(sPath)
For Each f In fldr.Files
sNewFile = Replace(f, ChrW$(21475), sNew)
Debug.Print f
Name f As sNewFile
Next
Set f = Nothing
Set fldr = Nothing
Set FSO = Nothing
End Sub
口
в строковый литерал в коде, что здесь является проблемой. - person GSerg   schedule 02.02.2021Dir
неправильно обрабатывает Unicode. Поэтому нужны обе ссылки. - person GSerg   schedule 02.02.2021ChrW$(21475)
и FSO, он правильно идентифицирует файлы с口
в их имени. - person GSerg   schedule 03.02.2021Name As
также не поддерживает Unicode. Назначьтеf.Name
для переименования. - person GSerg   schedule 03.02.2021