• 締切済み

さらに>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)に変換する関数が見つからないので・・・また後でっ!

関連するQ&A

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

    会社で海外用のWORD文書を作るのですが、 2バイト文字は使わないようにするのが一般的ですよね。 でも2バイト文字チェックマクロで、以前から持っていたマクロでは引っかかり、新しく配布された方では引っかからない文字があって、 どちらが正解なのか判断に困りました。 TimesNewRoman の特殊文字「×」は、2バイトみたいですね。 主にTimesNewRomanとSymbolフォントを使うのですが、 両方とも英語フォントだから2バイト文字は通常ない気がするのに、 あるものなんですね? その文字が2バイトなのか、1バイトなのか、 すぐにわかる方法ありませんか? また、WORDの文書で使うマクロ、どこかで配布されてませんか?

  • ワードの文字入力について

    ワードで、罫線で囲まれた四角い部分が有るとして、例えば、罫線で囲まれた部分の入力可能文字数は10文字だとすると、改行すると罫線が行方向にずれますが、そのずれは表のプロパティーから行の高さを固定値にすれば改行しても罫線のずれは止まるのですが、改行は下方にとめどなく進むようです。その改行を枠内で止める方法と、文字が右方向に(縦罫線のずれは無い)とめどなく進んでしまいます。そこで、10文字の枠内で、改行や文字が下方向や右方向に進まない(10文字で止まる)ようにする事は出来ないのでしょうか、分かりにくい文章で済みませんが宜しくお願い致します。

  • word2010のマクロについて

    word2010で、行頭にある改行コードを削除するマクロを作りたいのですが、wordのマクロは作ったこともなく、まったくの素人です。 ネット上では、置換機能で「^p^p」⇒「^p」でOKとはありますが、表が混在するワード文書では、表の次にある空行を削除することはできません。 Perlだと(Perlは使えます)、例えば、$line = s/^¥n//g; でいけますね。ワードのマクロはネットでいろいろ調べましたが、基本知識がないためよく分かりません。 どなたかご教授のほどよろしくお願いいたします。

  • ワードの機能について教えてください

    ワードの機能についていくつか教えてください。 1.フッター部分に罫線(ページ罫線?)が入っている文書の1ページ目に表紙ページを挿入しました。この表紙ページのみフッターの罫線を消したいのですが、セクション区切りを入れても、先頭だけ別指定にしても、どうしても罫線が残ってしまいます。この表紙ページのフッターの罫線を消す方法を教えてください。 2.同ページ内の以下の3つの列幅を揃えたいのですが、どうしても微妙にそろいません。揃える方法を教えてください。  ・ヘッダー内の表  ・本文内の表  ・本文内の段落罫線 よろしくお願いいたします。

  • Word2003で表中の文字が勝手に改行される

    Word2003を使っていますが、「表の挿入」(罫線機能)で作成した表に文字を入力すると、5文字程度入力できる余白があるのにもかかわらず、3文字で勝手に改行されてしまいます。これを罫線のハジのギリギリまで入力できるようにするにはどうすればよいのでしょうか? ここの質問履歴を調べたんですが、うまく検索できなかったので、よろしくお願いします。

  • WORDで隠し文字となってしまった改行を、普通の改行にしたい

    80ページ程の文書をWORDで書いています。 隠し文字の機能を用いているのですが 何かの拍子に改行にまで 隠し文字属性を付けてしまいました。 10個以上はあると思うのですが 置換機能などを使って簡単に 隠し文字でない改行に戻す方法はありませんか?

  • Word2007

    Word2007 Wordで、ある文書で表を印刷しようとしたところ、2ページ目には何も入力していないのですが、 2ページ目が印刷されてしまいます。 これはどのように削除したらいいでしょうか。 ※1ページ目にすべて表のみで作成されており2ページ目の最初に改行が一つあります。 [ ページ設定 ]で行数と文字数を最大にしても2ページ目が印刷されてしまいます。 どなたかご教授下さい。

  • Word 文書中の文字列を同一文書中で参照する方法

    Word 文書中の文字列を同一文書中で参照する方法をご教示ください. 例:文書の一行目の文字列→ 平成28年12月    ---本文---   ---本文---   ---本文--- *文中の罫線表で上記年月日を参照し以下の表示にする ーーーーーーーーーーーーーーーーーーーー | H28 | 12/1 | ーーーーーーーーーーーーーーーーーーーー | H28 | 12/2 | ーーーーーーーーーーーーーーーーーーーー   ・   ・   ・ ーーーーーーーーーーーーーーーーーーーー | H28 | 12/31 | ーーーーーーーーーーーーーーーーーーーー 注:MS Word(Win10 Office2016)です.

  • ワードのマクロについて

    お世話になります。 エクセルのマクロについてはここでよくアドバイスをもらっていますが、今回ワードでの処理について教えてください。 1つのフォルダにワード文書がたくさん入っています。 各ワード文書に対し以下の操作を自動化させたい。 1.すべてを選択(ctrl+A) 2.置換で「改行」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^p  置換後の文字列は「空白」   すべて置換 3.置換で「スペース」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^w  置換後の文字列は「空白」   すべて置換     4.すべてを選択 5.メニュー→書式→文字種の変換→全角にチェック→OK    ですべての文字を全角にする まとめると「すべての改行、スペースを削除し、全文字を全角に統一する」 この作業をフォルダ内の全ワード文書に対して一括で処理できないでしょうか? ちなみにワード文書は元々メモ帳(*.txt)で作成されていたものをリネームソフトで拡張子を*.docに変換したものです。そのためファイルを閉じるときに「書式なし形式で使用できない機能が含まれています」と聞いてきますが「はい」でOKです。 アドバイスおねがいします。

  • Wordの罫線について

    Wordの罫線を使って表を作成しています。 その表はページの半分ぐらいの大きさで、ページの左側にあります。 その表の右側にスペースがあるので、そこに文書を入力したいのですが、 文字を入力することができません。 表の一番右端の罫線の右外の改行マークのところにカーソルをもっていき、 「スペース」キーを押してもスペースが入らず、 (次の行の)表の一番左端に入力している文字が右へ動いていきます。 どのようにしたら、文字を入力することができるのでしょうか。 わかりにくい文章だと思いますが、どなたかご教授ください。

専門家に質問してみよう