Как заменить символ Юникода в именах файлов с помощью VBA

У меня есть сотни файлов в папке с символом 口 в имени файла. В конечном итоге я хотел бы переместить файлы с помощью макроса 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 bear_lamp    schedule 02.02.2021    source источник
comment
Если Calaloo — Direct Brands 2010q4 `92661 ck 口 us 口 Stmt 1.45 PB 8.69 EB 10.14 -mm 56569.pdf — это имя файла, которое должно быть выведено?   -  person QHarr    schedule 02.02.2021
comment
Лучшей целью для дубликата может быть: Работа с именами файлов Unicode в VBA.   -  person John Coleman    schedule 02.02.2021
comment
@JohnColeman - я добавил это.   -  person BigBen    schedule 02.02.2021
comment
@JohnColeman не говорит вам, как поместить символ в строковый литерал в коде, что здесь является проблемой.   -  person GSerg    schedule 02.02.2021
comment
@BigBen Я не думаю, что это было правильно.   -  person GSerg    schedule 02.02.2021
comment
@GSerg - понял. Я удалил его.   -  person BigBen    schedule 02.02.2021
comment
@BigBen Не стоило! :) Проблема как в невозможности иметь символ в редакторе, так и в том, что Dir неправильно обрабатывает Unicode. Поэтому нужны обе ссылки.   -  person GSerg    schedule 02.02.2021
comment
@GSerg - да, я тоже это только что понял ... OP не печатает символ в редакторе, я пропустил, я пытался поставить и 口, и ? в c2 на рабочем листе. Yay для флип-флоп.   -  person BigBen    schedule 02.02.2021
comment
@BigBen Они делают: VBA заменяет 口 вопросительным знаком..., что не работает из-за IDE. Затем они также попытались положить его на лист, что было хорошей идеей, но не сработало из-за Реж.   -  person GSerg    schedule 02.02.2021
comment
@GSerg Я все еще в растерянности - я пытался использовать ChrW (21475) и FSO, но все равно выдает ошибку.   -  person bear_lamp    schedule 02.02.2021
comment
@bear_lamp Тогда, пожалуйста, отредактируйте свой вопрос, чтобы показать текущий код. Когда я использую ChrW$(21475) и FSO, он правильно идентифицирует файлы с в их имени.   -  person GSerg    schedule 03.02.2021
comment
@GSerg хорошо отредактировано! Возможно проблема в синтаксисе, но я не могу понять.   -  person bear_lamp    schedule 03.02.2021
comment
@bear_lamp Name As также не поддерживает Unicode. Назначьте f.Name для переименования.   -  person GSerg    schedule 03.02.2021