Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


261 / 308 ツリー ←次へ | 前へ→

【150】漢字の検索 ffos 04/10/16(土) 2:42 質問[未読]
【155】Re:漢字の検索 Jaka 04/10/22(金) 16:53 回答[未読]
【157】Re:漢字の検索 ちゃっぴ 04/10/31(日) 17:18 回答[未読]

【150】漢字の検索
質問  ffos  - 04/10/16(土) 2:42 -

引用なし
パスワード
   ワード文書内の漢字のすべてにルビを振れるようにしたいのですが、
最初のとりかかりの部分でつまずいてます。
文書内の漢字の位置を知るにはどうすればよいのでしょうか?

【155】Re:漢字の検索
回答  Jaka  - 04/10/22(金) 16:53 -

引用なし
パスワード
   こんにちは。

こんな感じに1個1個文字コードを取得してから判定する事になるんじゃないかと思います。

Sub dkk()
Dim moji As String
Selection.WholeStory
cnt = Selection.Characters.Count
MsgBox cnt
For i = 1 To cnt
  MsgBox """" & Selection.Characters(i) & """の文字コードは、" & vbLf & _
      Asc(Selection.Characters(i))
Next
End Sub

【157】Re:漢字の検索
回答  ちゃっぴ  - 04/10/31(日) 17:18 -

引用なし
パスワード
   >ワード文書内の漢字のすべてにルビを振れるようにしたいのですが、
>最初のとりかかりの部分でつまずいてます。
>文書内の漢字の位置を知るにはどうすればよいのでしょうか?

正規表現を利用した方法です。

'要参照 Microsoft VBScript Regular Expressions 5.5

Sub GetKanji(strTarget As String)
  Dim objRegExp  As VBScript_RegExp_55.RegExp
  Dim colMatches As VBScript_RegExp_55.MatchCollection
  Dim objMatch  As VBScript_RegExp_55.Match
 
  Set objRegExp = New VBScript_RegExp_55.RegExp
  With objRegExp
    .Global = True
    .IgnoreCase = True
    '"\uxxxx"はUnicode16進文字コードを表します。
    .Pattern = "[\u4E00-\u9FA5\uF900-\uFA2D]+"
    Set colMatches = .Execute(strTarget)
  End With
 
  For Each objMatch In colMatches
    With objMatch
      Debug.Print "文字列:" & .Value
      Debug.Print "開始位置:" & .FirstIndex + 1
      Debug.Print "長さ" & .Length
    End With
  Next objMatch
End Sub

詳細はこちらをご参照ください。

Clinick's Clinic on Scripting: 正規表現による Visual Basic Scripting Edition (VBScript) の機能強化
http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.asp

261 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207146
(SS)C-BOARD v3.8 is Free