ファイル名に接頭辞・接尾辞を附加するFunction
ファイル名に接頭辞・接尾辞を附加するFunction
ファイル名変換ツールを自作したときに、ついでに作った。
ファイル名に接頭辞を付けるFunction
これは簡単。単純に先頭に文字列を追加するだけ。
リスト1 標準モジュール
Public Function getPrefixedFileName( _ ByVal fileName As String, _ ByVal prefixString As String) As String getPrefixedFileName = prefixString & fileName End Function
説明するのもあほらしくなるような簡単なコード。
ファイル名に接尾辞を付けるFunction
これはちょっとめんどくさい。ファイル名の文字列から〈「.
」(ドット)も含めた拡張子〉を除いた文字列に、接尾辞の文字列を附け加える。
リスト2 標準モジュール
Public Function getSuffixedFileName( _ ByVal fileName As String, _ ByVal suffixString As String) As String Dim positionOfDot As Long positionOfDot = InStrRev(fileName, ".") '……(1)' Dim nameString As String nameString = Left(fileName, positionOfDot - 1) '……(2)' Dim extentionWithDot As String extentionWithDot = Replace(fileName, nameString, "") '……(3)' getSuffixedFileName = nameString & suffixString & extentionWithDot End Function
まず(1)の
positionOfDot = InStrRev(fileName, ".")
で、InStrRev
関数を用いて、ファイル名文字列のケツから「.
」(ドット)を探す。
InStrRev
関数の返り値は、前から何文字目かを表す数値になるので注意。
これで、拡張子を表す「.
」(ドット)の位置が分かる。
次に(2)の
nameString = Left(fileName, positionOfDot - 1)
では、先ほど求めた拡張子を表す「.
」(ドット)の位置をもとに、Left
関数で、
〈「.
」(ドット)も含めた拡張子〉を除いた文字列
を切り出す。
例えば、「ち~んw.docx
」というファイル名だとすると、まず
InStrRev("ち~んw.docx", ".")
が「5
」を返すので、positionOfDot
は「5
」となる。
んで、
Left("ち~んw.docx", 5 - 1)
が「ち~んw
」を返すので、nameString
は「ち~んw
」になる、というわけ。
あと、(3)の
extentionWithDot = Replace(fileName, nameString, "")
で、Replace
関数を用いて、元のファイル名のうち、〈「.
」(ドット)も含めた拡張子〉を除いた文字列を「""
」で置換することによって、〈「.
」(ドット)も含めた拡張子〉を取り出す。
これはいろいろなやり方ができると思う。Right
関数使うとか。
最後に、〈「.
」(ドット)も含めた拡張子〉を除いた文字列、接尾辞、〈「.
」(ドット)も含めた拡張子〉をつなぎ合わせておしまい。
使ってみる
イミディエイト・ウインドウ上で、getPrefixedFileName
とgetSuffixedFileName
に、引数「ち~んw.docx
」と「【プヒー!】
」を渡してみる。
意図どおりの結果となった。
おわりに
まあ、一つのFunction
にまとめてしまって、引数で接頭辞か接尾辞かに分岐する方法もあると思う。