【Excel】テキストを「大文字、小文字、先頭だけ大文字」に変換するExcelVBAマクロ

Excel
スポンサーリンク

不揃いなテキスト文をExcelVBAで変換し表記を整える

文を適当にエディターで書くと大文字小文字が混在して気になる場合は、

ExcelVBAで変換して文字を整える。

  1. 大文字変換
  2. “http”を含む文字列はそのまま(ドメインなど変換しない)
  3. “:\”を含む文字列はそのまま(パスなど変換しない)

エディタからExcelにコピペして変換する

  • 変換前:シート名(ここにエディタの構文をコピペする)
  • 変換後:シート名(ExcelVBAマクロ実行後ここに張り付く)
Sub CNV_OHMOJI()
'vbUpperCase 1   文字列を大文字に変換します
'vbLowerCase 2   文字列を小文字に変換します
'vbProperCase    3   文字列の各単語の先頭の文字を大文字に変換します
'vbWide  4   文字列内の半角文字を全角文字に変換します
'vbNarrow    8   文字列内の全角文字を半角文字に変換します
'vbKatakana  16  文字列内のひらがなをカタカナに変換します
'vbHiragana  32  文字列内のカタカナをひらがなに変換します
Dim sh1 As String, st2 As String
Dim i As Integer, j As Integer
Dim LC As Integer, CC As Integer
Dim wk_nm1 As String, wk_nm2 As String, wk_nm3 As String
    
    sh1 = "変換前"
    sh2 = "変換後"
    LC = 1000
    CC = 10
    Sheets(sh2).Select
    Range(Cells(1, 1), Cells(LC, CC)).Select
    Selection.ClearContents
    Sheets(sh2).Cells(1, 1).Select
    For i = 1 To LC
        For j = 1 To CC
            wk_nm1 = Sheets(sh1).Cells(i, j)
            If InStr(wk_nm1, "http") <= 0 And _
               InStr(wk_nm1, ":\") <= 0 Then
               Sheets(sh2).Cells(i, j) = Trim(StrConv(wk_nm1, vbUpperCase))
            Else
               Sheets(sh2).Cells(i, j) = Trim(wk_nm1)
            End If
        Next j
    Next
End Sub

上記を関数化して「大文字、小文字、先頭だけ大文字」変換させてみる

Function CNVMOJI(r)
'vbUpperCase 1   文字列を大文字に変換します
'vbLowerCase 2   文字列を小文字に変換します
'vbProperCase    3   文字列の各単語の先頭の文字を大文字に変換します
'vbWide  4   文字列内の半角文字を全角文字に変換します
'vbNarrow    8   文字列内の全角文字を半角文字に変換します
'vbKatakana  16  文字列内のひらがなをカタカナに変換します
'vbHiragana  32  文字列内のカタカナをひらがなに変換します
Dim sh1 As String, st2 As String
Dim i As Integer, j As Integer
Dim LC As Integer, CC As Integer
Dim wk_nm1 As String, wk_nm2 As String, wk_nm3 As String
    
    sh1 = "変換前"
    sh2 = "変換後"
    LC = 1000
    CC = 10
    Sheets(sh2).Select
    Range(Cells(1, 1), Cells(LC, CC)).Select
    Selection.ClearContents
    Sheets(sh2).Cells(1, 1).Select
    For i = 1 To LC
        For j = 1 To CC
            wk_nm1 = Sheets(sh1).Cells(i, j)
            If InStr(wk_nm1, "http") <= 0 And _
               InStr(wk_nm1, ":\") <= 0 Then
               Sheets(sh2).Cells(i, j) = Trim(StrConv(wk_nm1, r))
            Else
               Sheets(sh2).Cells(i, j) = Trim(wk_nm1)
            End If
        Next j
    Next i
End Function

Sub CNVMOJI_Upp()
Dim RET As Variant
    RET = CNVMOJI(1)
End Sub

Sub CNVMOJI_Low()
Dim RET As Variant
    RET = CNVMOJI(2)
End Sub
Sub CNVMOJI_Pro()
Dim RET As Variant
    RET = CNVMOJI(3)
End Sub

サンプルはUWSCモジュール先頭10行とする

大文字指定:CNVMOJI_Upp()

※下記は大文字変換後のサンプル文

//Edgeを閉じる!!	
CTRLWIN(GETID("EDGE"),CLOSE)	
//環境に合わせて変更すること	
//EDGE = EXEC( "C:\Program Files (X86)\Microsoft\Edge\Application\MSEDGE.EXE" )	
	EDGE = EXEC( "C:\Program Files\Microsoft\Edge\Application\MSEDGE.EXE" )
	
SLEEP(1)	
//JRAのsitemapを立ち上げる	
URL="http://www.jra.go.jp/sitemap/"	
SENDSTR(EDGE, URL)	
SCKEY(EDGE, VK_RETURN)	
	
//EXEC("CMD /C START=http://www.jra.go.jp/sitemap/")	
SLEEP(1)	
//ここまでをサンプルで使用する。

小文字指定:CNVMOJI_Low()

※下記は小文字変換後のサンプル文

//edgeを閉じる!!	
ctrlwin(getid("edge"),close)	
//環境に合わせて変更すること	
//EDGE = EXEC( "C:\Program Files (X86)\Microsoft\Edge\Application\MSEDGE.EXE" )	
	EDGE = EXEC( "C:\Program Files\Microsoft\Edge\Application\MSEDGE.EXE" )
	
sleep(1)	
//jraのsitemapを立ち上げる	
URL="http://www.jra.go.jp/sitemap/"	
sendstr(edge, url)	
sckey(edge, vk_return)	
	
//EXEC("CMD /C START=http://www.jra.go.jp/sitemap/")	
sleep(1)	

先頭だけ大文字:CNVMOJI_Pro()

※下記は先頭だけ大文字変換後のサンプル文

//edgeを閉じる!!	
Ctrlwin(getid("edge"),close)	
//環境に合わせて変更すること	
//EDGE = EXEC( "C:\Program Files (X86)\Microsoft\Edge\Application\MSEDGE.EXE" )	
	EDGE = EXEC( "C:\Program Files\Microsoft\Edge\Application\MSEDGE.EXE" )
	
Sleep(1)	
//jraのsitemapを立ち上げる	
URL="http://www.jra.go.jp/sitemap/"	
Sendstr(edge, Url)	
Sckey(edge, Vk_return)	
	
//EXEC("CMD /C START=http://www.jra.go.jp/sitemap/")	
Sleep(1)	

今回はStrconvを使った文字列変換を試してみた。

Function CNVMOJI(r) r:に下記の数字を入れると説明のとおり変換する

Function CNVMOJI(r)

1:文字列を大文字に変換します

2:文字列を小文字に変換します

3:文字列の各単語の先頭の文字を大文字に変換します

4:文字列内の半角文字を全角文字に変換します

8:文字列内の全角文字を半角文字に変換します

16:文字列内のひらがなをカタカナに変換します

32:文字列内のカタカナをひらがなに変換します

※忘れた頃にたまに使う[StrConv関数]

直接的な指定の場合は、StrConv(wk_nm1, vbUpperCase)とした方が分かり易いが、モジュール内に入れて今回のように汎用的に使う場合は、数値で指定した方が上手く使い回せる場合が多い。

編集後記

私もたまに、「全角半角変換」は使うのでその都度ググってパラメータを確認したりする。

‘vbWide 4 文字列内の半角文字を全角文字に変換します
‘vbNarrow 8 文字列内の全角文字を半角文字に変換します

MessageBox同様になかなか連続で使ってないと、すぐに忘れるw

それでは、またね~😎

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