none
Word VBAで有効な改行表現がファイルによって異なるのはなぜ? RRS feed

  • 質問

  • Word上でHTMLタグを処理するマクロを作って使用するうち、不思議な現象に遭遇しました。

    これまで、<BR>タグをWordドキュメントの改行に変換するため、vbCrへの置換を行ってきました。
    他のコードも含め実際に置換してみるとその結果は
     "^p" 改行される
     vbCr 改行される
     vbLf 白四角として表示される
     vbCrLf 改行され、白四角が1つ表示される
     vbNewLine 改行され、白四角が1つ表示される
    となり、つまりCRコードが改行として機能すると認識していました。

    ところが、vbCrが白い四角になってしまうことがあるのです。
    それは特定のファイルを読み込んで作業するときに起こることで、変換を試してみると、
     "^p" 改行される
     vbCr 白四角が1つ表示される
     vbLf 白四角が1つ表示される
     vbCrLf 白四角が2つ表示される
     vbNewLine 白四角が2つ表示される
    となり、つまりCRコード・LFコードへの置換のいずれも、このファイルでの作業では改行の意味にならないようです(そんなことありえるのでしょうか??)。では"^p"は何なのかということですが…

    上のそれぞれの結果が得られるファイルのプロパティを参照しても、いずれもWord2016による作成で、テンプレートも同じ、特に違いは見つかりません。ただ、vbCrが四角になってしまうファイルを作成したのはわたしではなく別人で、どのような手順で作ったものなのかはまだ確認できていません。
    このような現象をどう理解すればよいか、お気づきの点あればご教示いただきたいと思います。
    よろしくお願いします。

    2018年3月6日 6:25

すべての返信

  • 問題のファイルがどうやって作られたのか、作者本人に確認が取れました。ExcelのデータからWordへ差し込みで作られたものなんだそうです。もう少し再現条件を考えてみます。
    2018年3月6日 11:25
  • こんにちは。
    私はねむねこさんが仰っているような現象に遭遇したことは無いのですが、問題となっている改行(文字)を選択した状態で、イミディエイトウィンドウで「?Hex(AscW(Selection.Characters(1).Text))」あたりを実行して、まずは文字コードを確認してみてはいかがでしょうか。
    2018年3月7日 0:49
  • きぬあささん、レスポンスありがとうございます。
    申し訳ありませんが、Wordでイミディエイトウィンドウを開く方法が分からなかったので、とりあえず四角を選択した状態でAlt+"X"で文字コードが得られないか試してみました。
    すると、なんと四角の部分はコードが表示されることはありませんでした(Alt+"X"しても四角のまま)。同じ操作で他のキャラクタは全て数値が表示できるのですが…
    引き続きこんなドキュメントができた過程を追っています。
    2018年3月7日 4:12
  • 前置
    私はwordのVBAはほぼ使わないのと
    ねむねこさんの行っている具体的作業がわかっていないので
    大きく外しているかもしれませんが、恐れず、コメントします。 m(_ _)m


    標準の改行コードは、
    WidowsOS:vbCrLF つまり、Chr(13) & Chr(10)
    ワード :vbCr
    エクセル:vbLf
    と私は理解しています。

    それは、
    http://jazzmaster.hatenablog.com/entry/2012/05/16/114714
    にも同じようなことが書いてあります。

    試しに、画像のようなコードをワードのVBAで実行してみました。
    その結果が添付の右下です。
    ワードの5行目は、
    "A"の右側にChr(3):制御文字(ETX)を書き込んだ例です。

    イミデエイト部分は、ワード側の5行をハイライトして
    Macro2を実行した結果です。

    結果を見る限り、
    ワードでは、
    vbCrLF、vbCr、vbLf
    この何れも、vbCrに読み替えるようです。

    >vbCrが白い四角になってしまうことがあるのです
    vbCrが白い四角になっているのではなく
    vbCrの右側(左側かも)に、何らかの制御文字があるんじゃないでしょうか。

    2018年3月8日 4:56