ワークシート関数charを使って、半角データを作ります
コードと文字を選択して、ドラッグします。
データが作成されます
ンまで作成されたか、チェック
表にローマ字を入力します。
範囲選択をし、コピーします。
Accessに切り替えます。 テーブルの場所で、右ボタン・貼り付けを選択します
はい、を選択します。(見出しがフィールド名になります)
テーブル名をリネーム、、フィールドサイズを調整します。
デバック、、中、、よく悩まされるNullエラー
エラーの内容は、string型の変数に、 nullを代入、、でエラーみたいなので、 小細工で、&""でかわす、、(いいのかよ、、)
テスト中、、200の配列の中身を表示、、、コード200を確認
デバックウインドウで、関数を単体で呼んで、テスト、、、
<Access97で半角カナをローマ字へ変換、、> 目次 1.はじめの挨拶 2.質問内容 3.サンプル 4.サンプル解説 5.積み残し、残作業項目 6.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.こんにちは */ こんにちは。 なんか、まだ、かぜぎみのKen3です。う〜ん、体調不良? 今回は、 Access97で半角カナをローマ字へ変換 です。 /* * 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.サンプル解説 */ ア.テストデータ作りは、エクセルで? 今回、前準備で、マスターデータを作りますが、 ア〜ンまで、コード・データを入力するの大変です。 そこで、Excel上に A列 B列 c列 d列 e列 CODE 文字 ローマ字 濁点 半濁点 177 =char(a2) a 178 I =char(a3) i 179 =char(a4) u ^^^^^^^^^^^^^^^^ ↑ここは、しかたなく手入力 ↑ドラックして、作成 表を作成します。 次に、範囲選択後、コピーします。 Accessを起動し、テーブルの場所で、右クリック・貼り付け を選択すると、簡単にテーブルの形を作ることができます。 式=char(a2)が値だけ保存されるので、便利では?
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 ※種類が豊富で探し易い※在庫ありが48時間以内発送 |