• 締切済み

さらに>2バイト文字を検出するマクロってありませんか?

先日No.2057187回答していただいたものです。 マクロを教えていただいたのですが、 word文書で、罫線(表)内の改行文字のすべてに引っかかります。 罫線でない、本文の方の改行文字には引っかからないのですが・・・。 あと、ページ数25枚の文書で「オーバーフロー」というエラーが出て機能しませんでした・・・。 どうしたらいいでしょう?

みんなの回答

noname#20378
noname#20378
回答No.2

Sub BYTE2_FIND() Dim myText As String Dim i As Long 'ここを変更 For i = 1 To ActiveDocument.Characters.Count myText = Selection.Text If LenMbcs(myText) > 1 Then  Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend  MsgBox Str(LenMbcs(myText)) & "バイト文字です。引っかかった文字はJISの" & Str(Asc(StrConv(str, vbFromUnicode))) & "番の文字です。" End If Selection.MoveRight Next i End Sub Function LenMbcs(ByVal str As String)  LenMbcs = LenB(StrConv(str, vbFromUnicode)) End Function とやって調べます。その二つの部分の差を調べますかね 色々情報が分散してたりしてろくに調べられた気がしないのでバグあるかもしれません。 #無駄な処理が多くてごめんなさい

jun29435
質問者

お礼

>引っかかった文字はJISの" & Str(Asc(StrConv(str, vbFromUnicode))) の2個目の「Str」 で、「コンパイルエラー、因数は省略できません」が出ます…(T_T)

noname#20378
noname#20378
回答No.1

Wordを持ってないので調べられませんが >「オーバーフロー」というエラーが出て ActiveDocument.Characters.CountがLong型なのに 宣言されているiがinteger型だからでしょう。 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbawd11/html/woproCount1_HV03081721.asp それだけの長い文書の文字数がintegerで済むとは到底思えないので >罫線でない、本文の方の改行文字には引っかからないのですが・・・。 今デバッグ用のコードを書こうと思ったけど「数字(Integer等)を文字(String)に変換する関数が見つからないので・・・また後でっ!