【エクセル マクロ】スネークケース・キャメルケース変換

スネークケースで書かれたテーブル定義をEntityに書くためにキャメルケースにしたり、その逆に変換したり。けっこう変換する機会は多いですよね。

そこで、Excel VBAを使って簡単に変換する方法をご紹介します。

【エクセル マクロ】スネークケース・キャメルケース変換

こちらのサイトの情報を参考にさせてもらいました。
汎用的なソースコードまではいきませんが、それなりに変換出来ます。

機能

主な機能は以下のようなものです。

  • パスカルケース・キャメルケース→スネークケース(大文字・小文字)
  • スネークケース(大文字・小文字)→パスカルケース・キャメルケース
  • 全角→半角変換
  • スネークケース(大文字・小文字)への変換の場合、前後の”_”を削除
  • 末尾の数値を考慮

ソースコード

ソースコードです。エクセルの「開発タブ」を開いて、Visual Basicから標準モジュールに貼り付けて使ってください。「Excel マクロ有効ブック(*.xlsm)」での保存も忘れないでください。

標準モジュールの使い方が分からない方は、こちらを参考にしてください。

Copy
''' パスカルケース・アッパーキャメルケース(PascalCase) 変換 ''' </summary> ''' <param name="value">変換する値</param> ''' <param name="isCamel">キャメルケース・ローワーキャメルケース(camelCase)にするか</param> ''' <returns></returns> Public Function ToPascal(ByVal value As String, Optional ByVal isCamel As Boolean = False) As String Dim ret As String: ret = "" ' 半角変換 value = StrConv(value, vbNarrow) ' スネークケースであるか If IsSnake(value) Then ' 変換 ret = SnakeToPascal(value) Else ' そのまま ret = value End If ' パスカルケース・キャメルケース変換 If isCamel Then ' 先頭文字を小文字、それ以外はそのまま ToPascal = LCase(Mid(ret, 1, 1)) & Mid(ret, 2, Len(ret)) Else ' 先頭文字を大文字、それ以外はそのまま ToPascal = UCase(Mid(ret, 1, 1)) & Mid(ret, 2, Len(ret)) End If End Function ''' <summary> ''' スネークケース → パスカルケース 変換 ''' </summary> ''' <param name="value">変換する値</param> ''' <returns></returns> Private Function SnakeToPascal(ByVal value As String) As String Dim ret As String: ret = "" Dim values As Variant Dim i As Long ' アンスコ区切りの配列を取得 values = Split(value, "_") ' 先頭文字を大文字、それ以外を小文字に変換 For i = LBound(values) To UBound(values) ret = ret & UCase(Mid(values(i), 1, 1)) & LCase(Mid(values(i), 2, Len(values(i)))) Next i SnakeToPascal = ret End Function ''' <summary> ''' スネークケース(SNAKE_CASE) 変換 ''' </summary> ''' <param name="value">変換する値</param> ''' <param name="isUpper">大文字に変換するか</param> ''' <returns></returns> Public Function ToSnake(ByVal value As String, Optional ByVal isUpper As Boolean = True) As String Dim ret As String: ret = "" ' 半角変換 value = StrConv(value, vbNarrow) ' スネークケースであるか If IsSnake(value) Then ' そのまま ret = value Else ' 変換 ret = PascalToSnake(value) End If ' 前後のアンスコの除去 ret = TrimUnderscore(ret) ' 大文字・小文字変換 If isUpper Then ' 大文字 ToSnake = UCase(ret) Else ' 小文字 ToSnake = LCase(ret) End If End Function ''' <summary> ''' パスカルケース → スネークケース 変換 ''' </summary> ''' <param name="value">変換する値</param> ''' <returns></returns> Private Function PascalToSnake(ByVal value As String) As String Dim ret As String: ret = "" Dim i As Long Dim character As String ' 文字を一文字ずつ取り出して繰り返す For i = 1 To Len(value) ' 対象文字 character = Mid(value, i, 1) ' 先頭文字 If i = 1 Then ret = ret & character GoTo CONTINUE End If ' 数値 If IsNumeric(character) Then ret = ret & character GoTo CONTINUE End If ' 小文字 If LCase(character) = character Then ret = ret & character GoTo CONTINUE End If ' 大文字 かつ 前の文字が小文字 If UCase(character) = character And LCase(Mid(value, i - 1, 1)) = Mid(value, i - 1, 1) Then ' アンダースコアを追加 ret = ret & "_" & character GoTo CONTINUE End If ret = ret & character CONTINUE: Next i PascalToSnake = ret End Function ''' <summary> ''' 前後のアンスコの除去 ''' </summary> ''' <param name="value"></param> ''' <returns></returns> Private Function TrimUnderscore(ByVal value As String) As String Dim ret As String: ret = "" Dim values As Variant Dim i As Long ' スネークケースであるか If IsSnake(value) Then ' アンスコ区切りの配列を取得 values = Split(value, "_") ' 先頭文字を大文字、それ以外を小文字に変換 For i = LBound(values) To UBound(values) ' 空じゃない場合、追加 If Len(values(i)) > 0 Then ' 先頭はアンスコをセットしない If Len(ret) = 0 Then ret = ret & values(i) Else ret = ret & "_" & values(i) End If End If Next i TrimUnderscore = ret Else TrimUnderscore = value End If End Function ''' <summary> ''' スネークケースであるか ''' </summary> ''' <param name="value">変換する値</param> ''' <returns>true:スネークケース</returns> Private Function IsSnake(ByVal value As String) As Boolean Dim values As Variant ' アンスコ区切りの配列を取得 values = Split(value, "_") If UBound(values) > 0 Then IsSnake = True Exit Function End If IsSnake = False End Function

使い方

Excelのセルに以下のように関数を入力すれば使えます。

ToPascal関数

ToPascal関数の使い方です。引数にTrueを追加することでキャメルケースになります。

excel スネークケース キャメルケース 変換 エクセル スネークケース・キャメルケース変換

ToPascal関数の結果です。

excel スネークケース キャメルケース 変換 エクセル スネークケース・キャメルケース変換

ToSnake関数

ToSnake関数の使い方です。引数にFalseを追加することで小文字表示になります。

excel スネークケース キャメルケース 変換 エクセル スネークケース・キャメルケース変換

ToSnake関数の結果です。

excel スネークケース キャメルケース 変換 エクセル スネークケース・キャメルケース変換

編集後記

VBAで使うとソースコードのカラーがおかしいですね。
気になりますけど、我慢していただけると助かります。

こちらの記事も読まれています!


\ 転職を本気で考えるなら /

  • 3つの有名スクールを現役エンジニアの視点で厳選!
  • あなたに合ったおすすめのスクールを紹介!

TECH CAMP エンジニア転職」…最短10週間で転職ができる年齢無制限のスクール!

TechAcademy Pro」…オンラインで全て完結のコスパ最強スクール!

DMM WEBCAMP」…給付金の対象講座もある実力派スクール!

参考サイト

【Excel マクロ】スネークケース・キャメルケース変換 ユーザー定義関数 demicadeのブログ