« あの手・この手の特許翻訳 (ブログの紹介) | トップページ | ワードの下付き文字の書式情報をテキスト情報に変換するマクロ »

2009年10月10日 (土)

ユーザーフォームのテキストボックス内で改行文字列を取り出す(その2)

先日の「ユーザーフォームのテキストボックス内で
改行文字列を取り出す(その1)」
のつづきです。

ユーザーフォームのテキストボックスでの改行記号は、
vbCrLfであることを前回説明しました。

今回は、このテキストボックス内の文字列を
.iniファイルに保存する方法を紹介します。

これが唯一の方法ではないですが、自分で思いつくままに
作ってみました。

他によい方法をご存じの方は教えてください。
よろしくお願いします。

▼考え方
テキストボックス内の「改行記号」を「別の文字列」に置換して
その置換された文字列全体を.iniファイルに保存します。

保存した文字列を読み込むときには、「別の文字列」を
「改行記号」に置換してからテキストボックスに表示します。

▼具体例
テキストボックス内で改行記号を含む文字列をそのまま.iniファイル
に保存した場合、文字列が.iniファイル内で改行されてしまいます。

すると、保存した文字列を読み出す場合に、改行される前までの
文字列しか読み出せないという現象がおこります。

たとえば、

あいうえお(改行)
かきくけこ

※:上記で(改行)は改行されているという意味であり、
(改行)という文字が表示されているわけではありません。

という文字列がテキストボックス(TextBox1)に書かれていた場合、
TextBox1.Valueで取得できる文字列は

TextBox1.Value = "あいうえお" & vbCrLf & "かきくけこ"

です。

これは前回ご紹介の通りです。

で、このまま.iniファイルの[textdata]という区分のtext1に保存すると、

[textdata]
text1=あいうえお(改行)
かきくけこ

という状態で保存されます。
(保存方法は、こちらをご覧ください)

この保存された文字列を読み出すときには、text1に対応する文字列は
改行までの「あいうえお」の文字列のみとなります。

そこで、この改行記号をとりのぞくために、保存する前に
「置換するプロセス」を組み込んだのが今回紹介するプログラムです。

▼保存する文字列の例
改行記号(vbCrLf)を★●★に置換します。

TextBox1.Value = "あいうえお" & vbCrLf & "かきくけこ"

TextBox1.Value = "あいうえお" & "★●★" & "かきくけこ"

この文字列を.iniファイルの上記と同じtext1に保存すると
以下のようになります。

[textdata]
text1=あいうえお★●★かきくけこ(改行)

これなら、text1から★●★でつなげられた
「あいうえお」と「かきくけこ」とが読み出せますね。

▼プログラム
Sub StoreTextData()

      '保存用のプログラム

      Dim strWord() As String '改行で区切られた文字列
      Dim myTextData As String '保存用文字列
      Dim i As Integer

10       On Error GoTo StoreData_Error

      'テキストボックスに文字が入力されていない場合には
      '保存用文字列は空(vbNullString)とする
20    If Len(TextBox1.Value) = 0 Then
30        myTextData = vbNullString
40    Else
      'テキストボックスに文字列が入力されている場合には
          '改行記号を★●★に置換する
          '①vbCrLfにて、取得した文字列を分解
50        strWord() = Split(TextBox1.Value, vbCrLf)
         
          '②分解した文字列の間に★●★を挿入
60        myTextData = strWord(0)
         
70        For i = 1 To UBound(strWord)
80            myTextData = myTextData & "★●★" & strWord(i)
90        Next

100   End If

JN:

      '保存用文字列を.iniファイルに保存
110   System.PrivateProfileString("ファイル名.ini", _
               "textdata", 1) = myTextData
               
120      On Error GoTo 0
130      Exit Sub

StoreData_Error:
         
          'TextBox1に改行がない場合
140       If Err = 9 Then
150           myTextData = TextBox1.Value
160           GoTo JN
170       Else
180           MsgBox "エラーが発生しました。終了します。"
190           End
200       End If

End Sub

▼解説
上記のプログラムでは、50~90行にて
改行記号(vbCrLf)を★●★に置換しています。

置換のためにSplit関数を用いているのですが、
他にもやり方はありそうです。

苦し紛れで、この方法を思いつきました。

なお、どのような文字列に置換してもいいのですが、
普段は使わない記号をおすすめします。

なぜなら、この保存した文字列を読み込むときに、
この★●★を今度は改行記号に置換しなおして、
テキストボックスに表示させる処理をするからです。

次回、.iniファイルに保存したこの文字列を
再度テキストボックスに表示させるプログラムを
紹介します。

|

« あの手・この手の特許翻訳 (ブログの紹介) | トップページ | ワードの下付き文字の書式情報をテキスト情報に変換するマクロ »

マクロプログラム」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/46446323

この記事へのトラックバック一覧です: ユーザーフォームのテキストボックス内で改行文字列を取り出す(その2):

« あの手・この手の特許翻訳 (ブログの紹介) | トップページ | ワードの下付き文字の書式情報をテキスト情報に変換するマクロ »