Сохранить как файл xlsx с кириллицей и специальными символами в имени файла - PullRequest
0 голосов
/ 14 декабря 2018

Я должен сохранить как файлы xlsx в формате html.Когда имя файла содержит специальные символы или буквы кириллицы, у меня возникает ошибка.

Как я могу экранировать эти специальные символы, чтобы файл, преобразующийся в .html, имел то же имя, что и исходные файлы xlsx с инструкцией VBA.

Когда я выполняю преобразование вручную, передав Excel, имя выходного файла (html) совпадает с именем файла xlsx.

Например, у меня есть имя файла xlsx

xzy1234567890!@నేనుÆды.test.ext.xlsx

после преобразования я хотел бы, чтобы имя было

xzy1234567890!@నేనుÆды.test.ext.htm

Это мой саб

Public Sub convertFile(ByRef arg As Variant)

    On Error GoTo GestionErreurs

    Dim repout, nameFile, reponse As String, wk As Workbook
    Dim f As Variant
    Dim Cell As Object

    ' display file running
    display_running arg

    repout = Range("output").Value

    ' if arg or repout are empty launch error message
    If arg = "" Then
        reponse = MsgBox("Please fill in a file to convert !", vbExclamation, "Error")
        status = 0
        Exit Sub
    ElseIf repout = "" Then
        reponse = MsgBox("Please enter a directory for the convert file !", vbExclamation, "Error")
        status = 0
        Exit Sub
    End If


    ' check specials caracters
    For Each Cell In Range("words")
     If InStr(1, arg, Cell) > 0 Then
        'replace
        f = retFind(Cell, Range("spcarater"), 2)
        arg = Replace(arg, Cell, f)
    End If

    Next Cell


   ' build path and name of him file
    nameFile = repout & "\" & Mid(Dir(arg), 1, InStrRev(Dir(arg), ".") - 1) & ".htm"

    nameFile = WorksheetFunction.EncodeURL(nameFile)

    ' open Xlsx files to convert
    Workbooks.Open filename:=arg, ReadOnly:=True
    'Workbooks(Dir(arg)).Activate

    ' copy the firt sheet in new woorbook
    ActiveWorkbook.Sheets(1).Copy

    ' save as new wookbook in HTM format
    ActiveWorkbook.SaveAs nameFile, xlHtml

    ' close all wookbooks
    ActiveWorkbook.Close
    'Workbooks(Dir(arg)).Activate
    Workbooks(Dir(arg)).Close

    ' return staus 1 > OK
    status = 1

    Exit Sub

GestionErreurs:
    hide_Running
    MsgBox "A errur has occurred : " & Error & Chr(13) & "Conversion failure for the file: " & Chr(13) & arg, vbCritical
    status = 0

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...