zkzhconv.bas rev.3 Written by Seiji Fujita http://userweb.alles.or.jp/sfujita/ =========================================================================== 【概説】 全角ひらがなと全角カタカナとを相互に変換するVBA for Excel用関数です。 作成はMS Excel 97で行いましたが、Excel 97以降であれば使用できるはず ですし、おそらくExcel 95でも使えると思います。 MS Word 97でも動作します。 また、MS Access 97以降にもそのままで使えると思います。 この関数は、全角カタカナを全角ひらがな変換、またはその逆変換をします。 関数名  ZKZHConv 関数の戻り値の型  文字列型(String型) 引数  第1引数 文字列(String型)―― 変換対象文字列  第2引数 文字列(String型)―― 変換方向を指示する文字列       "kh","KH","kH","Kh"のいずれか:カタカナ→ひらがな       "hk","HK","hK","Hk"のいずれか:ひらがな→カタカナ (a) 全角カタカナを全角ひらがなに変換する場合 ・「ヴ」は対応するひらがなが無いのでそのまま残します。 ・不適切な濁点・半濁点が付けられている場合の濁点・半濁点は単独で出力します。  (例:「ア゜」「オ゛」→「あ゜」「お゛」) ・第1引数に含まれる、2文字で表現された濁音・半濁音文字は、1文字表現に  変換します(例:「ハ゛」→「ば」に変換する)。 (b) 全角ひらがなを全角カタカナに変換する場合 ・不適切な濁点・半濁点が付けられている場合の濁点・半濁点は単独で出力します。  (例:「あ゜」「お゛」→「ア゜」「オ゛」) ・第1引数に含まれる、2文字で表現された濁音・半濁音文字は、1文字表現に  変換します(例:「は゛」→「バ」に変換する)。 (c) (a)(b)に共通する内容 ・第1引数として与える文字列は、全角カタカナやカタカナ以外を含んでいても  構いません。句読点、カギ括弧も全角に変換されますが、その他の文字  (例:?!abc…、丸括弧など)はそのまま出力されます。 ・濁点・半濁点にも対応しています。 ・第1引数に含まれる「ウ゛」「う゛」は、ともに「ヴ」に変換します。 【使用方法】 MS ExcelのVBEに、ソースファイルをコピー&ペーストするだけで、 ワークシート上で標準関数と同じ要領で使用したり、VBA側の他の関数から 組み込み関数と同様の要領で使用したりできます。 MS Accessの場合も上記に準じます。 ワークシートで使用する例  A1セルの内容が、「てすともじれつもし゛れつ」である場合、  B1セルに =ZKZHConv(A1,"hk") 、C1セルに =ZKZHConv(B1,"kh") と代入すると、  B1セルには変換結果の「テストモジレツモジレツ」、  C1セルには変換結果の「てすともじれつもじれつ」、 が表示されます。 VBAで使用する例:  str1 = ZKZHConv("てすともじれつもし゛れつ","hk")  str2 = ZKZHConv(InString,"kh") 【ソースプログラムの改変・配布など】 著作権は私が保持しますが、必要に応じて改変を認めます。 配布も自由に行って戴いて構いません。 改変の場合は改変内容と改変者を追加し、オリジナルそのままでないこと を記すとともに、オリジナルのクレジット部分も残してください。 【備考】 ・VBAとして記述したコードをVBScript/Windows Script Hostとして記述し直した版も  公開しています。マウスクリックで単独動作させたい場合はそちらをご利用下さい。 ・ExcelのVBAが備える StrConv関数を使用して、以下のようなサンプル関数を作成  すると、ZKZHConv関数と同様のことを実現できます。  但し、2文字で記述された濁点・半濁点文字は、そのまま残されてしまいます  (「ケ゛」←→「け゛」)ので、その対応をしたい場合には、2文字を1文字  に変換し直す処理を追加することが必要です。  また、このStrConv関数は、VBScriptには存在していないため、以下のサンプル関数  は、VBScriptとして実行させることができません。 ' 文字列中の全角カタカナを全角ひらがな、あるいはその逆に変換する関数例 ' flag が Trueなら、カタカナ→ひらがな、 Falseなら、ひらがな→カタカナ Function KatakanaXHiragana(ByVal MyString As String, ByVal flag As Boolean) As String If flag = True Then KatakanaXHiragana = StrConv(MyString, vbHiragana) Else KatakanaXHiragana = StrConv(MyString, vbKatakana) End If End Function 【その他】 本VBA関数を使用した結果に対して、作者は一切の保障・補償を致しません。 本関数に対するご意見・ご希望は歓迎いたしますが、作者はそれら全てに 対応する義務を持ちません。同様に、バグや仕様不足に対する修正の義務 も持ちません。 【履歴】 rev.0 公開 rev.0' 本説明書のパラメータ説明部分にミスがあったのを修正した。    関数本体の変更はないため、revは変更しない。 rev.1 単独の濁点・半濁点の変換で実行時エラーが発生してしまうのを修正。    全角の濁点なしのカタカナ/ひらがなと全角または半角の濁点/半濁点    とが並んでいる場合にそれぞれが独立したままになるのを、結合される    様に改善した。    無意味な式と変数宣言が残っていたのを除去した。 rev.2 全角ひらがな→全角カタカナ変換の際に、「ぴ」が「ヒ゜」、    「ぷ」が「ピ」に誤変換されるのを修正(半濁点が半角且つその前方が    全角の「ひ」と「ふ」の場合だけに発生する。    なお「ピ」「プ」はそれぞれ「ヒ゜」「フ゜」に変換される。    定数宣言時の記述ミスが原因(ハヒフヘホをハフフヘホとミスしていた)。    但し、表向きは半角文字を対象としていないため、実質的な問題は    ないと思われる。    宣言し忘れの変数 slen を宣言した。 rev.3    パラメータ hdkd を hkdd と誤って記述していたのを修正した。