0

以下のコードは、「..」を「.」に変更するために使用したものです。たとえば、「file..pdf」のようなファイル名があり、「file.pdf」にしたいのですが、すべてのドットが削除されます。変更方法がわかりません:

Function strLegalFileName2(ByVal FName) As String
Dim i As Integer

Const strIllegals = "*&..&*"
strLegalFileName2 = FName
For i = 1 To Len(strIllegals)
    strLegalFileName2 = Replace(strLegalFileName2, Mid$(strIllegals, i, 1), ".")
Next i
End Function

Sub LoopThroughFiles2()
Dim FName As Variant
Dim strNew As String
Dim strDir As String

strDir = "path"
FName = Dir(strDir & "*..*")
Do While Len(FName) > 0
    strNew = strLegalFileName2(FName)
        If StrComp(strNew, FName) <> 0 Then Name (strDir & FName) As (strDir & strNew)
    FName = Dir
Loop
End Sub
4

2 に答える 2

0

ファイル名のすべての文字を通過するため:

For i = 1 To Len(strIllegals)

したがって、すべての「。」が削除されます。あなたのファイル名に。

シンプルな使い方:

Function strLegalFileName2(ByVal FName) As String
Dim i As Integer

Const strIllegals = "*&..&*"
strLegalFileName2 = FName

strLegalFileName2 = Replace(strLegalFileName2, "..", ".")

End Function
于 2015-05-19T09:23:30.013 に答える
0

一部の特殊文字を他の文字に変更したい場合は、次の関数を使用することをお勧めします。

Function strLegalFileName2(ByVal FName) As String
Dim strIllegal() As String
Dim i As Integer

Const strIllegals = "..@=>@."

strIllegal = Split(strIllegals, "@|@")

For i = LBound(strIllegal) To UBound(strIllegal)
    FName = Replace(FName, Mid(strIllegal(i), 1, InStr(1, strIllegal(i), "@=>@") - 1), Mid(strIllegal(i), InStr(1, strIllegal(i), "@=>@") + 4))
Next i

strLegalFileName2 = FName
End Function

より違法な場合は、そのstrIllegals = "..@=>@."ようなものstrIllegals = "..@=>@.@|@&@=>@ AND "に変更&できANDます。

于 2015-05-19T10:46:16.090 に答える