i2i無料WEBパーツ
FC2ブログ

VBA キャメライズのファンクションを作成

VBA
08 /08 2010
Javaのコーディングしていると、DB定義書の物理項目名を見ながらキャメライズされたフィールド名を大量に作成するという作業をしなければならない事がたまにありますわな。

キャメライズ
staff_id → staffId

■デキャメライズ(?)
staffId → staff_id

こんな感じでね。

そんな時にはVBAのマクロが恋しくなるわけですが、ググってみたけど見つけられなかったので自分でつくってみました。
ええ、VBAは素人なので、激しく怪しいですが使えそうでしたら使ってください。

キャメライズしたい列に、アクティブセルを配置しActiveCellCamelizeマクロを実行します。
キャメライズ1
キャメライズされた文字列がテキストボックスに表示されますので、エディタにコピペでもして使ってください。
キャメライズ2

デキャメライズの場合は、ActiveCellDechamelizeを実行します。
デキャメライズ1
出力結果はこんな感じ。
デキャメライズ2

↓ファイルのダウンロードはこちら。
firestorage

以下、キャメライズ、デキャメライズファンクションのソースコードです。


'<機能>
' 文字列をキャメライズして返します。
'<戻り値>
' なし
'<説明>
'
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function camelize(value As String) As String

Dim camelString As String
Dim targetChar As String
Dim underBarFlg As Boolean
underBarFlg = False
'文字列を1文字ずつ取得
For i = 1 To Len(value)
targetChar = Mid(value, i, 1)
If (underBarFlg) Then
camelString = camelString & UCase(targetChar)
underBarFlg = False
GoTo LABEL1
End If
If targetChar = "_" Then
'対象文字がアンダーバー
underBarFlg = True
Else
'対象文字がアンダーバー以外
camelString = camelString & targetChar
End If
LABEL1:
Next

camelize = camelString
End Function


'<機能>
' 文字列をデキャメライズして返します。
'<戻り値>
' なし
'<説明>
'
'@:kevinjohnsonjp
'URL:http://kevinjohnson2.blog69.fc2.com/
Function decamelize(value As String) As String

Dim camelString As String
Dim targetChar As String
'文字列を1文字ずつ取得
For i = 1 To Len(value)
targetChar = Mid(value, i, 1)
If InStr(UPPER_CHAR, targetChar) > 0 Then
'対象文字が大文字
camelString = camelString & "_" & LCase(targetChar)
Else
'対象文字が小文字
camelString = camelString & targetChar
End If
Next

decamelize = camelString
End Function


次は、DB定義書からSQLやエンティティのある程度のコーディングをしてくれる、ユーティリティでもつくろうかな。

コメント

非公開コメント

承認待ちコメント

このコメントは管理者の承認待ちです

KevinJohnsonjp

札幌でSEやってる人の業務日誌。

↓こんなのも書いてたりします。
ホットペッパー KJさんのグルメ手帳『北○』の口コミ書きました