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


お金があるかないかで人生の楽しさは全く変わってきます。

お金があっても幸せになれるとは限りませんが、お金がない人生は不幸です。

お金がなかった私が、転職して年収1000万を超えるまでにお世話になったブログを紹介します。

エンジニア転職のリアル

今の時代は、お金を稼げるかどうかは能力の有無よりも触れた情報の質によるものが大きいです。
ぜひ皆さんも良質な情報に触れて、お金持ちになって人生を充実させてください。