No.3ベストアンサー
- 回答日時:
No.1 です。
やり直しました。
漢字は熟語で区切ってふりがなを取得し、漢字以外は文字数に応じて半角スペースで埋めています(半角文字は半角スペース1個、全角文字は半角スペース2個に置き換えます)
Sub test()
Dim testText As String
testText = _
"菅義偉首相は21日午後、新型コロナウイルス感染症対策本部を官邸で開催する。" & _
"感染が急速に拡大している地域に関し、観光支援事業「Go To トラベル」の適用制限を巡り見解を表明する。"
Debug.Print GetFurigana(testText)
End Sub
'文字列を受け取って、ふりがなを返す
Public Function GetFurigana(srcText As String) As String
'引数の文字列が空の場合は処理を抜ける
If srcText = "" Then Exit Function
Dim furigana As String 'ふりがな
Dim i As Long
'文字数だけ繰り返す
For i = 1 To Len(srcText)
Dim c As String: c = Mid(srcText, i, 1) '一文字取り出す
Dim nonKanji As String '漢字以外
Dim cWord As String 'compound word 熟語
Dim temp As String
'漢字の場合、前の漢字と結合する
If c Like "[亜-黑]" Then
cWord = cWord & c
'漢字以外
Else
nonKanji = nonKanji & c
'空文字を回避(空文字をGetPhoneticすると変になるので)
If cWord <> "" Then
'漢字以外の文字の数だけスペースを追加
'半角文字は半角スペース1個、全角文字は半角スペース2個
furigana = furigana & _
Space(LenB(StrConv(nonKanji, vbFromUnicode)))
'カタカナをゲット
temp = Application.GetPhonetic(cWord)
'ひらがなに変換
temp = StrConv(temp, vbHiragana)
'ふりがなと結合する
furigana = furigana & temp
temp = ""
cWord = ""
nonKanji = ""
End If
End If
Next
GetFurigana = furigana
End Function
No.1
- 回答日時:
ふりがなだけ別に取得するなら下のコードで事足りそうです。
漢字の上にルビを振るのなら別の工夫が要りそうです。
Sub test()
Dim testText As String
testText = _
"「文化庁コンテンツ転載文7関係1」とは、「GNU本ライセンス投稿記事107引用7」制度をしない。" & _
"「CC」とも、「URLSAテンプレートウェブページ」に有するない。「権利情報」とは、" & _
"Creative作風提供要件3充足107と可否の濫記事、またここを文章権とする記事を得ます。"
Debug.Print GetFurigana(testText)
End Sub
'文字列を受け取って、ふりがなを返す
Public Function GetFurigana(srcText As String) As String
'引数の文字列が空の場合は処理を抜ける
If srcText = "" Then Exit Function
Dim furigana As String
Dim c As String
Dim i As Long
'文字数だけ繰り返す
For i = 1 To Len(srcText)
c = Mid(srcText, i, 1) '一文字取り出す
If c Like "[亜-熙]" Then
c = Application.GetPhonetic(c) 'ふりがなをゲット
c = StrConv(c, vbHiragana) ' ひらがな
furigana = furigana & c
’漢字以外の場合はどうするか。(空白で埋めるとか)
Else
'なんらかの処理
End If
Next
GetFurigana = furigana
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelの50音順ソートを全ての行列に適用するには? 4 2022/12/05 11:28
- Excel(エクセル) Excelへのデータ入力作業 4 2023/07/01 18:21
- Excel(エクセル) Excelの社員名簿 6 2023/07/10 16:35
- その他(結婚) 名前変更手続きについてです。 来年に結婚が決まり、相手側の名字になります。 それと共にキラキラ寄りな 1 2023/06/02 03:39
- 日本語 「若干」が「多い」という意味で使われる理由 11 2023/04/19 15:00
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- 戸籍・住民票・身分証明書 ご自分の氏名のフリガナを変えたい、と思ったことはありますか。 6 2023/02/04 07:51
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- その他(教育・科学・学問) 文字に書いたときと読んだときでちがう言葉ってないですか?たとえば原因のフリガナはげんいんですが、言葉 10 2022/09/21 23:07
- マンガ・コミック マンガ「日出ずる処の天子」第一巻のP45に使われる漢字の読み方 1 2022/09/13 18:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全角括弧と全角読点の間隔を狭...
-
空白に を使うべきでしょ...
-
エクセルのCOUNTIFが正しくカウ...
-
文字の入力で横バー上段、中断...
-
文字列中の両丸括弧を取り除くV...
-
半角文字全角文字のちがい
-
PHP 正規表現の書き方を教えて...
-
半角文字と全角文字の判別の仕方
-
半角英数文字を全角英数文字に...
-
PHPでMySQLに入力した半角スペ...
-
Thunderbirdでのアドレスの表記...
-
VBAのコマンドボタンの文字列の...
-
Excel VBAからBeckyを起動して...
-
phpでの文字エンコード
-
C#の改行について
-
JavaMail,本文中の改行について
-
ダブル、シングルクォーテーシ...
-
ToolTipTextの改行はできないの...
-
ソースコードの1行が長いとき...
-
delphi でのコード上でTab を入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel関数「COUNTIF」で”文字”...
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
エクセルのCOUNTIFが正しくカウ...
-
半角記号、全角記号を含む正規...
-
全角括弧と全角読点の間隔を狭...
-
VBAで英数字入力チェックしたい。
-
全角英数文字が嫌われる理由を...
-
記号は半角と全角どちらがよい...
-
XMLのタグ名の禁則文字
-
Replace関数は文字数の制限ある...
-
文字列中の両丸括弧を取り除くV...
-
携帯電話の相手の電話番号にメ...
-
エクセルでの漢字、カタカナ、...
-
2つ以上の連続する空白文字を除去
-
Excel2002 一桁数字だけ全角に置換
-
VBScriptである文字列に半角文...
-
IT企業の技術屋にとって全角英...
-
特定の文字を簡単な操作で半角...
-
半角文字と全角文字の判別の仕方
おすすめ情報