[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.023 Access97で半角カナをローマ字へ変換、、

Access97で半角カナをローマ字へ変換、、


本文(発行内容)


<Access97で半角カナをローマ字へ変換、、>
目次
1.はじめの挨拶 
2.質問内容
3.サンプル
4.サンプル解説
5.積み残し、残作業項目
6.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。
なんか、まだ、かぜぎみのKen3です。う〜ん、体調不良?

今回は、
Access97で半角カナをローマ字へ変換
です。

今回の実行できるサンプル・手順の画像を
hosoku/023/index.html
で、確認可能にしてあります。画像を見ながら、読んでください。
*テスト環境は、Access97,Excel97 です。

/*
 * 2.質問内容
*/
読者の人から、質問で、
----
>教えて欲しいのですが、Excel、
>またはAccessで半角カタカナからヘボン
>式ローマ字に変換したいのですが、良い方法はないでしょうか?
>変換のテーブルを作るのはいとわないのですが、
>高速に処理する方法はないでしょうか?
----
とメールをいただきました。

チョット変なサンプルですが、見てください。
*あまり、高速じゃないなぁ、、、







/*
 * 3.サンプル
*/
基本構想、、、
マスターテーブルに
CODE	文字	ローマ字 濁点	半濁点
202	ハ	ha	ba	pa
203	ヒ	hi	bi	pi
204	フ	hu	bu	pu
205	へ	he	be	pe
206	ホ	ho	bo	po
のイメージでデータを入れる。(マスター修正可能)

初期設定で、変数にテーブルデータを読み込む。

変換処理で、
1文字取りだし、変換テーブルを見て、ローマ字をセット
例)ハセガワだったら、ハを取りだし、コード変換
  配列の202番目を見て、データをセット
  ガの時は、濁点の判断をし、
  配列の濁点データをセットする。
コードの一発参照なので、ある程度、速いと思うけど、、、
*なんか、キレがイマイチだなぁ、、

'----- ここから サンプルです。
Option Compare Database
Option Explicit

Type TYPE_HENKANTBL       'ユーザー定義型を定義します。
    HEBON   As String 'ローマ字
    DAKUTEN As String '濁点
    HANDAKU As String '半濁点
End Type

Public typHENKANTBL(255) As TYPE_HENKANTBL   'もったいないけど、255個取る

' Mst_KanaConv テーブルから、マスターデータを
' グローバル変数、 typHENKANTBL(255)に読み込む
' 一回だけ、前準備で実行
Sub KanaConvInit()

    'ローカル変数定義
    Dim dbs    As Database
    Dim rstMST As Recordset

    Dim strSQL As String
    Dim nIndex As Integer
    
    'データベース指定
    Set dbs = CurrentDb
   
    'SELECT文
    strSQL = "SELECT * FROM Mst_KanaConv "
    Set rstMST = dbs.OpenRecordset(strSQL, dbOpenDynaset)

    '初期値のセット
    rstMST.MoveFirst  '先頭に移動、念のため?

    'マスターデータをセットする
    While rstMST.EOF = False
        'アスキーコードの場所にセットする
        nIndex = rstMST![CODE]
        typHENKANTBL(nIndex).HEBON = rstMST![ローマ字] & ""
        typHENKANTBL(nIndex).DAKUTEN = rstMST![濁点] & ""
        typHENKANTBL(nIndex).HANDAKU = rstMST![半濁点] & ""
        rstMST.MoveNext '次のデータを読む
    Wend

    'テーブル・データベースをクローズする
    rstMST.Close
    dbs.Close

End Sub

' 受け取った文字列を1文字毎に調べ、
' 半角カナをローマ字に変換した結果を返す
'
Function KanaConv(strKANA As String) As String

    Dim nCNT    As Integer
    Dim nIndex  As Integer
    Dim strRET  As String   'リターン値
    Dim strCHK  As String   'チェック用
    Dim strNEXT As String   'チェック用(次の文字、濁点、半濁点判定用)
    
    strRET = ""  'リターン値の初期化
    
    For nCNT = 1 To Len(strKANA & "")
        strCHK = Mid(strKANA, nCNT, 1)       '1文字取り出す
        strNEXT = Mid(strKANA, nCNT + 1, 1)  '次の文字も取り出す
        
        nIndex = Asc(strCHK)  'アスキーコードに変換する
        'ア〜ンの範囲か調べる、、
        'ア-->177  ン-->221
        If 177 <= nIndex And nIndex <= 221 Then
            '次の文字に濁点゛か半濁点゜があるか、チェックする
            ' ↓゛と゜は半角で打つ
            If strNEXT = "゛" Or strNEXT = "゜" Then
                If strNEXT = "゛" Then '濁点?
                    strRET = strRET & typHENKANTBL(nIndex).DAKUTEN
                Else '半濁点
                    strRET = strRET & typHENKANTBL(nIndex).HANDAKU
                End If
                nCNT = nCNT + 1 'カウンターを小細工で1つ増やす(濁点・半濁点分)
            Else  'テーブルに登録されているローマ字をプラスする
                strRET = strRET & typHENKANTBL(nIndex).HEBON
            End If
        Else 'その他の文字
            strRET = strRET & strCHK    'そのまま文字を+する
        End If
        
    Next nCNT

    KanaConv = strRET

End Function
'----- ここまで

/*
 * 4.サンプル解説
*/
ア.テストデータ作りは、エクセルで?
    hosoku/023/index.html 参照
  今回、前準備で、マスターデータを作りますが、
  ア〜ンまで、コード・データを入力するの大変です。
  そこで、Excel上に
   A列   B列    c列    d列   e列      
  CODE  文字    ローマ字 濁点 半濁点
  177   =char(a2) a		
  178	I  =char(a3)  i
  179	   =char(a4)  u
    ^^^^^^^^^^^^^^^^ ↑ここは、しかたなく手入力
    ↑ドラックして、作成
  表を作成します。
  次に、範囲選択後、コピーします。
  Accessを起動し、テーブルの場所で、右クリック・貼り付け
  を選択すると、簡単にテーブルの形を作ることができます。
  式=char(a2)が値だけ保存されるので、便利では?

チョットカゼぎみなので、詳細は、次回に回します。
*質問、ください。。。

/*
 * 5.積み残し、残作業項目
*/


/*
 * 6.終わりの挨拶
*/
今回、解説無いので、
サンプル画像を見ながら、やってみてください。
*サンプルを実行して、処理を1つ1つ。

では、また。  かぜぎみで調子の悪い三流PGのKen3でした。

*だったら、次回に回せって、、、中途半端で発行するなよ、、、


ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

リンクや広告など

項目別に本音?それとも建て前?的な記事をまとめました。

気になったジャンル↓を選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]