Excel VBAでファイルパスの末尾をチェックして、セパレータを追加する

「C:\tmp」というフォルダに「hoge.txt」があるとする。
このhoge.txtを指定するには「C:\tmp\hoge.txt」と指定しなければいけない。
しかしこのとき、フォルダの末尾に「\」がちゃんと書いていないと、

「フォルダ」と「パス」が別々に指定されていたときに、ファイルをちゃんと見つけることができない。

具体的には、このような場合だ。

f:id:sho322:20140115201456j:plain

フォルダとファイルが別セル書かれている。
それぞれの値を利用して、ファイルを開きたいが、パスの末尾にセパレータが書いてあるかはわからない。

なので、ちゃんとセパレータをチェックしよう。

コード例

以下のサンプルでは、フォルダの末尾が「\」であるかを確認して、「\」でなかった場合に「\」を追加している。


Option Explicit
Sub ファイルのパスを調べる()
  Dim orgFolderPath As String
  Dim fileName As String
  orgFolderPath = Cells(3, 2).Value
  fileName = Cells(4, 2).Value
  MsgBox ("BEFOER:" + orgFolderPath + fileName)
  orgFolderPath = addSeparator(orgFolderPath)
  'addSeparator (orgFolderPath)   これだとC:\tmphoge.txtとなる
  MsgBox ("AFTER:" + orgFolderPath + fileName)
End Sub
Function addSeparator(ByVal orgPath As String)
  Dim stringLength As Integer
  Dim endString As String
  endString = Right(orgPath, 1)
  If (endString <> "\") Then
    addSeparator = orgPath & "\"
  Else
    addSeparator = orgPath
  End If
End Function

実行結果

実行結果はこのようになる。
f:id:sho322:20140115201506j:plain

f:id:sho322:20140115201515j:plain

セパレータを削除する

逆にセパレータを削除するには以下のような関数を使うといい。


Function removeSeparator(ByVal orgPath As String)
  Dim stringLength As Integer
  Dim endString As String
  Dim cutPoint As Integer
  removeSeparator = orgPath
  stringLength = Len(orgPath)
  cutPoint = stringLength - 1
  endString = Right(orgPath, 1)
  If (endString = "\") Then
    removeSeparator = Left(orgPath, cutPoint)
  End If
End Function