😺

【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