-
三流君の [コンビニ系HPへ] [VBA系HPへ] [ASP系HPへ] [愚痴系HPへ]

Access97で半角カナをローマ字へ変換(未完成)

戻 る
実物を確認したい方は、→023.LZH 36KB をダウンロードして、見てください。
Excel97 データ作成編とAccess97の処理サンプルが入っています
ワークシート関数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)が値だけ保存されるので、便利では?


質問や要望、クレームを送る(三流君に連絡する 連絡方法)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい

(感想や質問・要望・苦情はHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。

番外編 愚痴系で書いてた今日の一品 (短いサブ関数など)

2000/05/13 SQL Count関数を使ってみる
2000/05/11 Access97 標準関数Midなどが使えない
2000/05/09 SendObjectのエンコード
2000/05/08 クエリーで〜以外とは
2000/04/27 Imagingコントロールを使ってみた
2000/04/25 Excel97 VBA イベントなど
2000/04/24 Access97で複数のプリンタを切替えて使用
2000/04/20 書式付きエクスポート DoCmd.OutputToで、できます
2000/04/19 Access97でExcel形式へExport時に書式設定を行いたい
2000/04/13 Access97でOutlook97/98とリンクする方法
2000/04/13 VBA Nameステートメント
2000/04/04 Accessでキー取得
2000/04/04 AccessでFile参照ダイアログ?
2000/04/03 縦書用数値変換改良
2000/04/01 Access Err テーブルを消したい
2000/03/31 縦書き数値、どうしてますか?
2000/03/29 VBA 手抜きで、処理後、explorerを開く
2000/03/28 Access --> Word へデータ
2000/03/24 名前一覧Excelの機能で、同じことできました
2000/03/23 Excel97 VBA セルに付けた名前一覧を作成する
2000/03/21 Excel セルに名前付け
2000/02/25 iniFileを読む GetPrivateProfileString
2000/02/15 Excel VBA Rangeオブジェクトとサンプル
2000/02/14 Access97 SizeMode/OLEサイズ で画像調整
2000/02/10 Access97 Pictureプロパティとサンプル
2000/02/09 Access97 集計クエリーで重複値をハジク
2000/02/07 Access97 サブフォームへ値をセット
2000/02/04 Access97 コントロールソース、チョットした使用法
2000/02/01 Access97 フォームフッター
2000/01/18 Access97 now()関数で有効期限処理、、、

←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 種類が豊富で探し易い※在庫ありが48時間以内発送


[三流君(TOP)]へ戻る。