Excel VBA でファイル名に使えない文字を取り除く

Excel VBA でファイルの保存を行う時には、ファイル名に使えない文字があります。
たとえば、セルの値やInputBoxからの入力など、ユーザーが関与する可能性のある値をもとにファイル名をつける場合には、チェックしたほうがいいかもしれません。ファイル名はプログラム内で生成するというような場合は気にする必要はないでしょう。

目次
  1. ファイル名に使えない文字
  2. ファイル名に使えない文字の確認方法
  3. ファイル名に使えない文字を取り除くコード

ファイル名に使えない文字


ファイル名に使えない文字には大きく二種類あります。
  • Windows の都合で使えない文字
  • Excel の都合で使えない文字
この二つを合わせると、下表のようになります。なお、ファイル名に使えないのは下表の半角文字で、同じ記号でも全角文字はファイル名に使うことができます。
なお、半角の円記号は日本語以外の環境(フォント?)ではバックスラッシュとして表示されます。このブログ記事でも、お使いの環境によって円記号で表示されたりバックスラッシュで表示されたりすると思います。そのため、上の表は画像にしました。

また、バックスラッシュで表示されている場合でも、以下で紹介するVBAコードをVBEに貼り付けると半角円記号になります。

ファイル名に使えない文字の確認方法


下記のようなコードを実行して、WindowsおよびExcelで使えない文字を使ってブックを保存しようとすると、下記のようなメッセージが表示されます。「C:\Temp」をご自身の環境に存在するフォルダに変更して実行してみてください。
Sub saveWithNGcharTest()
    Dim newBook As Workbook
    
    Set newBook = Workbooks.Add
    
    'OK
    'newBook.SaveAs "C:\Temp\hoge.xlsx"
    
    'NG
    newBook.SaveAs "C:\Temp\<.xlsx"
    newBook.SaveAs "C:\Temp\[.xlsx"
    newBook.SaveAs "C:\Temp\\.xlsx"
End Sub

また、デスクトップ等で、Windowsの都合でファイル名に使えない文字をファイル名に入力すると、下記のメッセージが表示されます。

ファイル名に使えない文字を取り除くコード


下記のプログラムで、対象の文字を取り除くことができます。非常に原始的な方法ですが。。。
全部取り除くと空文字列になってしまうかもしれない場合は二番目の引数(オプショナル)に置換用の文字を指定することができます。
Public Function replaceNGchar(ByVal sourceStr As String, _
        Optional ByVal replaceChar As String = "") As String

    Dim tempStr As String
    
    tempStr = sourceStr
    tempStr = Replace(tempStr, "\", replaceChar)
    tempStr = Replace(tempStr, "/", replaceChar)
    tempStr = Replace(tempStr, ":", replaceChar)
    tempStr = Replace(tempStr, "*", replaceChar)
    tempStr = Replace(tempStr, "?", replaceChar)
    tempStr = Replace(tempStr, """", replaceChar)
    tempStr = Replace(tempStr, "<", replaceChar)
    tempStr = Replace(tempStr, ">", replaceChar)
    tempStr = Replace(tempStr, "|", replaceChar)
    tempStr = Replace(tempStr, "[", replaceChar)
    tempStr = Replace(tempStr, "]", replaceChar)

    replaceNGchar = tempStr
End Function

COMMENTS

名前

Android,8,Canon,1,Eos 70d,2,EOS Kiss X7,3,Excel,3,GIMP,5,Git,3,Git Bash,3,Inkscape,3,iPhone,1,Kindle,2,PC,4,SSH,3,Thinkpad X240,2,Thinkpad X260,3,TOEFL,1,TOEIC,4,VBA,4,VBScript,2,WEB制作,3,Windows,3,Windows 10,1,インターネットバンキング,1,カメラ,1,デザイン,1,圧縮&解凍,2,英語,8,撮影機材,3,雑感,1,資格,13,情報処理技術者試験,5,電子書籍,2,動画,1,読書,1,簿記,2,
ltr
item
勉強とガジェット: Excel VBA でファイル名に使えない文字を取り除く
Excel VBA でファイル名に使えない文字を取り除く
https://2.bp.blogspot.com/-9MPMYyiw66w/WENPxbxZYiI/AAAAAAABwNI/wlQHxGettWsLPnIUYnvsHtouXxHP3OXigCLcB/s400/keyboard-621830_1920.jpg
https://2.bp.blogspot.com/-9MPMYyiw66w/WENPxbxZYiI/AAAAAAABwNI/wlQHxGettWsLPnIUYnvsHtouXxHP3OXigCLcB/s72-c/keyboard-621830_1920.jpg
勉強とガジェット
http://tanaka-misaki.blogspot.com/2012/02/excel-vba.html
http://tanaka-misaki.blogspot.com/
http://tanaka-misaki.blogspot.com/
http://tanaka-misaki.blogspot.com/2012/02/excel-vba.html
true
8692194293250221214
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS CONTENT IS PREMIUM Please share to unlock Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy