😺
【Excel VBA】スネークケースをキャメルケースに一瞬変換! 〜仕事で役立つ効率化の第一歩〜
【Excel VBA】スネークケースをキャメルケースに一瞬変換! 〜仕事で役立つ効率化の第一歩〜
こんにちは、おったーです🦦
システム開発や業務の資料作成をしていると、こんなシーンありませんか?
「DBのカラム名(
user_name)を、JavaやJSの変数名(userName)に直したい…」
「Excelで一覧を作ったけど、全部手で直すのは地味に面倒…」
そんなときに役立つ、Excelで一瞬で変換できるVBAスクリプトを紹介します。
小さな自動化から始める、効率化の第一歩です。
AIで作成しています
💡 できること
- スネークケース(
snake_case)をキャメルケース(camelCase/PascalCase)に変換 - Excel上で複数セルをまとめて変換
- 隣列に出力する安全モードあり
- ワークシート関数としても使用可能
🧩 コード
Excelで Alt + F11 → 「挿入」→「標準モジュール」に以下を貼り付けます。
Option Explicit
'=== 1) コア変換関数:snake_case -> camelCase / PascalCase ===
Public Function SnakeToCamelCore(ByVal s As String, Optional ByVal upperFirst As Boolean = False) As String
Dim re As Object, parts() As String
Dim i As Long, p As String, out As String
Set re = CreateObject("VBScript.RegExp")
With re
.Global = True
.IgnoreCase = True
.Pattern = "[^A-Za-z0-9]+"
End With
s = re.Replace(s, "_")
Do While Len(s) > 0 And Left$(s, 1) = "_": s = Mid$(s, 2): Loop
Do While Len(s) > 0 And Right$(s, 1) = "_": s = Left$(s, Len(s) - 1): Loop
Do While InStr(s, "__") > 0: s = Replace(s, "__", "_"): Loop
If Len(s) = 0 Then
SnakeToCamelCore = ""
Exit Function
End If
parts = Split(LCase$(s), "_")
If upperFirst Then
out = CapFirst(parts(0))
Else
out = parts(0)
End If
For i = 1 To UBound(parts)
p = parts(i)
If Len(p) > 0 Then out = out & CapFirst(p)
Next i
SnakeToCamelCore = out
End Function
Private Function CapFirst(ByVal s As String) As String
If Len(s) = 0 Then
CapFirst = ""
ElseIf s Like "[0-9]*" Then
CapFirst = s
Else
CapFirst = UCase$(Left$(s, 1)) & Mid$(s, 2)
End If
End Function
Public Sub ConvertSelectionSnakeToCamel()
Dim c As Range
If TypeName(Selection) <> "Range" Then Exit Sub
Application.ScreenUpdating = False
For Each c In Selection.Cells
If Not c.HasFormula Then
c.Value = SnakeToCamelCore(CStr(c.Value), False)
End If
Next c
Application.ScreenUpdating = True
End Sub
Public Sub ConvertSnakeToCamelNextColumn(Optional ByVal upperFirst As Boolean = False)
Dim c As Range
If TypeName(Selection) <> "Range" Then Exit Sub
Application.ScreenUpdating = False
For Each c In Selection.Cells
If Not c.HasFormula Then
c.Offset(0, 1).Value = SnakeToCamelCore(CStr(c.Value), upperFirst)
End If
Next c
Application.ScreenUpdating = True
End Sub
'=== ワークシート関数(UDF)用:名前はコアと別にする ===
Public Function SNAKE_TO_CAMEL(ByVal s As String, Optional ByVal upperFirst As Boolean = False) As String
SNAKE_TO_CAMEL = SnakeToCamelCore(s, upperFirst)
End Function
Discussion