スポンサーリンク

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

VBA

「Excelマクロで文字を加工したい。」
という悩みを解決します。初心者でも簡単です。

Left, Mid, Rightで文字列を指定し、切り出したい文字数を入れるだけです。

Leftで12345を取り出す図

ファイルを開くプログラムでパスを取得する際に便利なので、ぜひマスターしましょう。

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で345を取り出す図

使用例:名前を紐づけたファイルを開く

状況の例

デスクトップに2つファイルがある図

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

sampleA.xlsm:プログラム実行ファイル
sampleA_data.xlsx:開きたいファイル

ファイル名”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”を作りましょう。

SampleAのファイル名を作る例

ファイル名が手に入ったので、残りは保存しているフォルダのパスだけです。

③開きたいファイルのパスを作る

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”を開くことができました。

しかし、仮にサンプル名が”sampleA1″だったらこのプログラムは失敗します。
Leftで左から7文字を切り出しているので、”sampleA1″ではなく”sampleA”までしか取得できないからです。
Leftで7文字とると失敗する例

ファイル名を間違えたら当然パスも間違えるので、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とLengthでファイル名をとる例

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

まとめ

今回は文字列を切り出す方法について解説しました。
うまく切り取れているかわからないときは、MsgBoxで表示してみると良いですよ。
ファイルを開くプログラムと相性が良いので、ぜひ組み合わせてみてください。

コメント

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