
今回は文字を切り取る方法を解説します。
ファイル名とかを切り出して、別のプログラムに利用したりできますね。
私はfor文すら知らないプログラミングのド素人からVBAとPythonを独学しました。
会社では通常業務に加えて作業自動化と機械学習をしています。

・ファイル名から特定の文字を切り出したい
・文字データを加工したい
・名前で紐づけたデータを処理したい
こんな人におすすめの内容です。
以下のように、好きな文字を取り出して利用することができます。

今回解説するのは、文字の切り取りができる関数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_data.xlsx:開きたいファイル
ファイル名”sampleA”が共通しているので、これを利用して開いてみましょう。
ファイルの開き方は以下の記事で解説しています。

ファイルのパス(どこに保存されているか)さえわかれば開けます。
なので目的はファイルのパスを作ることです!!
例えばデスクトップにある”sampleA_data.xlsx”のパスは以下の通り。

これが作成できたらゴールです。
実行ファイルの名前を取り出す
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”です。

もちろん保存先が変わればパスも変わるので注意してください。

上図のようにアドレスバーをクリックすれば保存先フォルダのパスをコピーできます。
あとはファイル名とくっつけたらパスが完成。
これをWorkbooks.Open()の中に入れればファイルが開けます!!

わからなくなったらMsgBoxで途中までのファイル名やパスを確認しましょう。
どこまで思い通りの結果になっているか確認することがコツです。
Left関数を使うコツ
これで”sampleA_data.xslx”を開けました。
しかし仮にサンプル名が”sampleA1″だったら失敗します。
Leftで左から7文字を切り出しているので、”sampleA1″ではなく”sampleA”までしか取得できないからです。

ファイル名を間違えたら当然パスも間違えるので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″が取り出せます。

この方法ならサンプル名がどれだけ長くなっても大丈夫。
まとめ
今回は文字列を切り出す方法について解説しました。
痒い所に手が届く関数なのでぜひ使ってみましょう!!
コメント