#557 | ファイル名に使えない文字が含まれていないかチェックする | VBA | |
Windowsには、ファイル名として使えないいくつかの文字があります。エクスプローラでは、そのような文字を入力しようとした時点でチェックが働いて、入力さえできません。 しかし、Accessでたとえばユーザーがインプットボックスなどでその都度ファイル名を指定してエクスポートなどを行う場合、インプットボックスの時点では当然チェックされず、エクスポートを実行する時点でエラーが起ります。 そのようなとき、ユーザーによって指定されたファイル名の文字列を事前にチェックするための、ファイル名として使えない文字が含まれていないかどうかを調べるサンプルプロシージャを紹介します。 次の例では、引数としてファイル名を渡します。使えない文字が含まれていたらFalse(NG)を、含まれていなければTrue(OK)を返します。 Public Function ChkFileNameChar(strFileName As String) As Boolean Dim avarExcept As Variant Dim iintLoop As Integer '使用不可の文字を配列に代入 avarExcept = Array("\", "/", ":", "*", "?", """", "<", ">", "|") '配列の文字をひとつずつチェックするループ For iintLoop = 0 To UBound(avarExcept) 'バイナリで配列の文字と照合 If InStr(1, strFileName, avarExcept(iintLoop), vbBinaryCompare) > 0 Then '含まれていたらFalseを返す ChkFileNameChar = False Exit Function End If Next iintLoop '含まれていなければTrueを返す ChkFileNameChar = True End Function 実行例: 「Export.txt」は問題ないのでTrueが返ります。「Export\.txt」には「\」が、また「E/xport.txt」には「/」が含まれているのでFalseが返ります。「E/xport.txt」には「/」が含まれていますが、これは全角なのでファイル名として使えますので、Trueが返ります。 ※InStr関数においては、”vbBinaryCompare”を指定する必要があります。これを指定しないと半角・全角の違いがチェックされませんので、「/」も「/」も同じであると判断され、ともにFalseとなってしまいます。 |
|||
|
Copyright © T'sWare All rights reserved |