goo blog サービス終了のお知らせ 
見出し画像

パソコン悪戦苦闘記録

Wordの表から文字列を取り出すと変な記号が

 Wordマクロ(Word VBA)で、表内の文字列を取り出すことがあります。
 このとき、何やらへんてこな記号みたいなものが、取り出した文字列にくっ付いています。
 その変な記号が邪魔になります。そして、何より、その記号の正体が不明です。


 下の画像をご覧ください。
 Word文書の冒頭に表が挿入されています。
 左側に「goosyun」と、右側に「@ymail.ne.jp」と文字列が入っています。Wordマクロでその文字列を取り出して、メッセージボックスに表示させた画像です。




 【1】と【2】のVBAマクロコードは次のとおりです。

Sub 表内データ【1】()
Dim myT1 As String, myT2 As String
With ActiveDocument.Tables(1)
  myT1 = .Cell(1, 1).Range.Text
  myT2 = .Cell(1, 2).Range.Text
End With
MsgBox myT1 & myT2
End Sub

Sub 表内データ【2】()
Dim myT1 As String, myT2 As String
With ActiveDocument.Tables(1)
  myT1 = .Cell(1, 1).Range.Text
  myT2 = .Cell(1, 2).Range.Text
End With
MsgBox Left(myT1, Len(myT1) - 2) & Left(myT2, Len(myT2) - 2)
End Sub

 マクロコード【1】と【2】を実行すると、それぞれメッセージボックスが表示されます。
 【1】のマクロ実行で出てくるメッセージボックス内の文字列は、途中で改行されている上に、変な記号が混じっています(上に掲載の画像中のメッセージボックスをご覧ください)。
 それに対して、【2】のマクロの実行では、望むとおりの文字列がメッセージボックスに表示されます。途中改行も、変な記号もありません。

 
 実は、Word文書の表内の文字列には、目には見えない特殊な制御文字が入っているのです。
 表の中に入っている文字列には、
 1 段落記号(改行文字)
 2 セルの区切り表す制御文字
と、この2つが含まれています。
 文字列の末尾に、この2つの制御文字が常にくっ付いています。

 よって、表内から文字列を取り出した場合は、末尾の制御文字を削除する必要があります。
 Left関数を使えば、末尾の2文字を削除できます。
  Left(Txt,Len(Txt)-2) という構文になります。




それでは、また次の記事で
goosyun

コメント一覧

goosyun
nekono-hironya さん

 いつも、当ブログへのご訪問、ありがとうございます。
 「オススメの書籍」ですね。
 そうですね、あまり知らないのですが、個人的に好みの参考書などを、当ブログで紹介できたら、とは思います。
nekono-hironya
こんばんは。自分は仕事でFORTRANの計算結果をテキストファイルで書き出したものや市販ソフトのデータをcsvで取り出したものをExcelで扱う事が多いです。
 テキストやcsvデータを処理するマクロをネットで検索してり色々してますけど、難しいですね。
 オススメの書籍などありましたら、いつかブログで紹介いただけるとありがたいです。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事