つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

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