【VBA】ExcelマクロのLeft,Right,Midで文字を切り取る方法

VBA
スポンサーリンク

今回は文字を切り取る方法を解説します。

ファイル名とかを切り出して、別のプログラムに利用したりできますね。

私はfor文すら知らないプログラミングのド素人からVBAとPythonを独学しました。

会社では通常業務に加えて作業自動化と機械学習をしています。

・ファイル名から特定の文字を切り出したい
・文字データを加工したい
・名前で紐づけたデータを処理したい

こんな人におすすめの内容です。

以下のように、好きな文字を取り出して利用することができます。

ファイル名を切り出す例

今回解説するのは、文字の切り取りができる関数Left, Mid, Rightです。

ぜひファイルを開くプログラムなどと組み合わせてみてください。

Leftで左から切り取る

Sub test()

Text = "123456789"
MsgBox Left(Text, 5)

End Sub

変数Textが元々の文字列です。

Left(文字列, 文字数)で左から切り取ることができます。

Leftで文字を切り取る例

1~9の左から5文字なので”12345″が表示されますね。

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″ですね。

Midで途中から文字を切り取った図

名前を紐づけたファイルを開く

文字の切り取りを利用してファイルを開きましょう。

デスクトップに以下2つのファイルがあるとします。

デスクトップに2つファイルがある図
sampleA.xlsm       :プログラム実行ファイル
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”までしか取得できないからです。

Leftで途中までしか文字を切り出せない

ファイル名を間違えたら当然パスも間違えるので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に使いましょう。

拡張子を除いた文字数だけLeftで切り取る

すると拡張子だけを除くことができるので結果的に”sampleA1″が取り出せます。

この方法ならサンプル名がどれだけ長くなっても大丈夫。

まとめ

今回は文字列を切り出す方法について解説しました。

痒い所に手が届く関数なのでぜひ使ってみましょう!!

VBA
スポンサーリンク
HTOMblog

コメント

タイトルとURLをコピーしました