Left, Mid, Rightで文字列を指定し、切り出したい文字数を入れるだけです。
ファイルを開くプログラムでパスを取得する際に便利なので、ぜひマスターしましょう。
Leftで左から切り取る
Sub test()
Text = "123456789"
MsgBox Left(Text, 5)
End Sub
変数Textが元々の文字列です。
Left(文字列, 文字数)で左から切り取ることができます。
1~9の左から5文字なので”12345″が表示されますね。
Rightで右から切り取る
Sub test()
Text = "123456789"
MsgBox Right(Text, 5)
End Sub
使い方はLeftと同じです。
右から切り取るので”56789″が表示されます。
Midで好きな位置から切り出す
Sub test()
Text = "123456789"
MsgBox Mid(Text, 3, 3)
End Sub
Mid(文字列, 開始位置, 文字数)で切り取ります。
上記コードなら左から3番目から3文字なので”345″ですね。
使用例:名前を紐づけたファイルを開く
状況の例
デスクトップに以下2つのファイルがあるとします。
ファイル名”sampleA”が共通しているので、これを利用して開いてみましょう。
>>Excelマクロでファイルを開く方法
ここで、ファイルを開くにはファイルのパス(保存先の文字列)が必要になります。
例えば、デスクトップにある”sampleA_data.xlsx”のパスは以下の通りです。
このパスが手に入ればファイルが開けるので、Left関数を使ってうまく取得してみましょう。
①実行ファイルの名前を取り出す
Sub test()
MsgBox ThisWorkbook.Name
End Sub
ThisWorkbook.Nameで取得できます。
私と同じファイル名で実行しているなら”sampleA.xlsm”と表示されるはずです。
この文字列を加工して目的のファイル名を作りましょう。
②開きたいファイルの名前を作る
Sub test()
Filename = ThisWorkbook.Name
sampleName = Left(Filename, 7)
MsgBox sampleName
targetName = sampleName & "_data.xlsx"
MsgBox targetName
End Sub
“sampleA.xlsm”の左から7文字を切り取ればサンプル名が手に入ります。
そして実際に開きたいファイル名”sampleA_data.xlsx”を作りましょう。
ファイル名が手に入ったので、残りは保存しているフォルダのパスだけです。
③開きたいファイルのパスを作る
Sub test()
Filename = ThisWorkbook.Name
sampleName = Left(Filename, 7)
targetName = sampleName & "_data.xlsx"
folderPath = "C:\Users\HTOM\Desktop"
Workbooks.Open (folderPath & "\" & targetName)
End Sub
例えば、デスクトップまでのパスは”C:\Users\[ユーザー名]\Desktop”です。
アドレスバーをクリックすれば保存先フォルダのパスがわかります。
フォルダのパスはこれをコピペしましょう。
あとはファイル名をくっつけて、Open()の中に入れればファイルが開けます。
Left関数を使うコツ
上記のプログラムで”sampleA_data.xslx”を開くことができました。
ファイル名を間違えたら当然パスも間違えるので、Openでエラーになります。
そこで以下のようにLeft関数の中身を変えましょう。
Sub test()
Filename = ThisWorkbook.Name
nameLength = Len(Filename)
sampleName = Left(Filename, nameLength - 5)
MsgBox sampleName
End Sub
変数nameLengthに元の文字の文字数が入ります。
例えば”sampleA1.xlsm”なら文字数が13です。
ここから拡張子”.xlsm”の5文字を引いた数字をLeftに使いましょう。
これで拡張子だけを除くことができるので、結果的に”sampleA1″が取り出せます。
まとめ
今回は文字列を切り出す方法について解説しました。
うまく切り取れているかわからないときは、MsgBoxで表示してみると良いですよ。
ファイルを開くプログラムと相性が良いので、ぜひ組み合わせてみてください。
コメント