Remove illegal characters while saving workbook Excel VBA

后端 未结 1 931
灰色年华
灰色年华 2021-01-13 07:02

this code basically reformats an xls file and saves it as an xlsx. however it uses G2 & H2 to grab the filename for the newly formatted file.

相关标签:
1条回答
  • 2021-01-13 07:30

    Because there could be more illegal characters in the filename. Your approach is right but it's not comprehensive list of illegal characters to remove or replace from the filename before saving it. For eg. these characters are missing from the array in your code -> : & . However it is advised to keep filename rid of other allowed special characters too.

    Below, I am providing the function which returns a safe string that can be used to produce filename before saving.

    Function ReplaceIllegalCharacters(strIn As String, strChar As String) As String
        Dim strSpecialChars As String
        Dim i As Long
        strSpecialChars = "~""#%&*:<>?{|}/\[]" & Chr(10) & Chr(13)
    
        For i = 1 To Len(strSpecialChars)
            strIn = Replace(strIn , Mid$(strSpecialChars, i, 1), strChar)
        Next
    
        ReplaceIllegalCharacters = strIn 
    End Function
    

    Specifically, in your code, replace the ActiveWorkbook.SaveAs line with this line:

    ActiveWorkbook.SaveAs Filename:= _
       WBPath & "\BOM_" & Range("G2").Value2 & "_" & ReplaceIllegalCharacters(Range("H2").Value2, "_") & ".xlsx" _
        , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    
    0 讨论(0)
提交回复
热议问题