filename = ファイル
FileNo = FreeFile
Open filename For Input As FileNO
Do until EOF(FileNo)
Line Input #FileNo, strBuff
:
上記のようにファイルの中身を読むコードを書いてます。
ファイルが通常のテキストやCSVの場合なら正しく読み込んで
くれますがリッチテキストの場合、読み込む際文字が化けてしまいます。
どうしたらいいか困っているので誰か教えてくれませんか?
>リッチテキストの場合、読み込む際文字が化けてしまいます。
化けているんじゃなくて、RTFコードを含めてそのままを読み込んでいるんですよ。
リッチテキストを読み込みたいのであればRichTextBoxのLoadFileメソッド
を使って読み込めばいいんじゃないでしょうか。
リッチテキストファイルコントロールに
テキストファイルとリッチテキストファイルの
内容を合わせて格納したときはどちらも
正常に値をとれるのでしょうか?
※横スマソ
> リッチテキストファイルコントロールに
> テキストファイルとリッチテキストファイルの
> 内容を合わせて格納したときはどちらも
> 正常に値をとれるのでしょうか?
…試した?
Open "abc.rtf" For Output As FileNo
Print #FileNo, RText.TextRTF
Print #FileNo, Text.Text
Close FileNo
とやってみたのですがRtextの内容しか入っていなくてTextの内容が
入ってませんでした。
内容を組み合わせて正確に値が格納できるか調査する以前に
2つの内容を合わせて格納するとこまでいっていないので
試せてはいません。
試す前に質問とかしてすいません
問題点があやふやだなぁ…それとも俺の理解不足か…?(orz
なんとなく、RTFとテキストが混同していると思われるので、何か書こうかと思う。
Microsoft リッチテキスト ボックス コントロール 6.0(RICHTX32.oca)のプロパティ、
"Text"と"TextRTF"について補足。
・Textはリッチテキストボックスコントロールの文章上の文章。
・TextRTFはRTF(RichTextFormat)が入っている。
たとえば、Text="abc"として、TextRTFを見ると、
{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset128 \'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e;}}
\viewkind4\uc1\pard\lang1041\f0\fs18 abc
\par }
となっている(…汚いな…)。
このTextRTFをリッチテキストファイルとして保存すれば、リッチテキストフォーマットのファイルが出来る。
…で、補足がおわるわけだけど…他に書くことあったかなぁ…?
※ヘルプを見た感じのです。
どうやって確認しましたか?
こちらで試した後、メモ帳で開くとちゃんとTextの内容が入っていましたよ。
ただし、Wordで開くとRtextの部分でリッチテキストの終了だと判断してしまうようです。
単純にテキストの部分が欲しいなら、これでいいのでは?
Open "abc.txt" For Output As FileNo
Print #FileNo, RText.Text
Print #FileNo, Text.Text
Close FileNo
史上最弱の弟子さんの言うようにメモ帳で開いた場合、
テキストの文字はちゃんと入りますがリッチの場合は
タグ?っぽいのが入ってしまいます。
テキスト部分のみじゃなくて今回は2つのファイルを
1つのリッチテキストとして保存してそれを読み込みたい
です。
ガッさんのコメントを参考にして
RText.Text = RText.Text & vbCrLf & Text.Text
Print #FileNo, RText.TextRTF
としたのですがこの場合テキスト部分までリッチテキストフォーマット
が効いてしまいました。
1つのリッチテキストにリッチテキスト、テキストの内容をそのまま
書き込むというのできないのでしょうか?
Open "abc.txt" For Output As FileNo
Print #FileNo, RText.Text
Print #FileNo, Text.Text
Close FileNo
> 史上最弱の弟子さんの言うようにメモ帳で開いた場合、
> テキストの文字はちゃんと入りますがリッチの場合は
> タグ?っぽいのが入ってしまいます。
それは、"Print #FileNo, RText.Text"の"RText.Text"の部分ですな。
> テキスト部分のみじゃなくて今回は2つのファイルを
> 1つのリッチテキストとして保存してそれを読み込みたい
> です。
んー…具体的な部分をコードとして提示しないと、いつまでも押し問答が続くぞ?
…ひとまず、やりたいことを箇条書きにすることをお勧めする。
矛盾を取り払うという意味も含めて。
> ガッさんのコメントを参考にして
> RText.Text = RText.Text & vbCrLf & Text.Text
たしか、俺は RText.Text="abc" としたら、RText.TextRTF も変更されると暗黙に書いたような…?
ま、もう一度言っておきましょう。
RText.Text に代入 → RText.TextRTF でRText.TextのリッチテキストフォーマットされたStringが取れる。
> Print #FileNo, RText.TextRTF
> としたのですがこの場合テキスト部分までリッチテキストフォーマット
> が効いてしまいました。
そりゃそーでしょう…
と、上記に書いたとおりのことが実際に起こったからです。
> 1つのリッチテキストにリッチテキスト、テキストの内容をそのまま
> 書き込むというのできないのでしょうか?
コレだけなら、
dim st as string
st=RText.TextRTF & vbcrlf & Text.Text
open "somefile" for output as FileNo
print #FileNo,st;
close FileNo
でいい予感。
※…まぁ、どこがわからないかを箇条書きすれば矛盾も(ry
…なんかメチャクチャなこと書いているかも…
スマソ、石油ストーブ&カゼっぽぃので頭クラクラなので、この辺で(orz
そもそも、なぜリッチテキストとして保存したいのでしょうか?
最初の質問が
> ファイルが通常のテキストやCSVの場合なら正しく読み込んで
> くれますがリッチテキストの場合、読み込む際文字が化けてしまいます。
> どうしたらいいか困っているので誰か教えてくれませんか?
なので、リッチテキストで保存せずにプレーンテキストで保存すれば良い
と思うのですが・・・
> RText.Text = RText.Text & vbCrLf & Text.Text
> Print #FileNo, RText.TextRTF
じゃなくて
RText.Text = RText.Text & vbCrLf & Text.Text
Print #FileNo, RText.Text
でいいかと。
リッチテキストとテキストの内容を合わせてその内容を取得
してその情報をいろいろ使用していこうと思ってます。
その際、リッチテキストの内容をそのまま使用したいのです。
ただ、その合わせた内容がほしいだけなので実際にはリッチテキスト
ファイルに書き込まなくても内容がとれるのであればそれを利用
したいと思います。
リッチテキストとテキストの内容を合わせてその内容を取得
してその情報をいろいろ使用していこうと思ってます。
その際、リッチテキストの内容をそのまま使用したいのです。
ただ、その合わせた内容がほしいだけなので実際にはリッチテキスト
ファイルに書き込まなくても内容がとれるのであればそれを利用
したいと思います。
リッチテキストファイルとテキストファイルを合わせてテキストボックスに
表示するならこんな感じですけど、こういうこと?
RichTextBox1.LoadFile "c:\hogehoge.rtf", rtfRTF
Text1.Text = RichTextBox1.Text
RichTextBox1.LoadFile "c:\hogehoge.txt", rtfText
Text1.Text = Text1.Text & vbCrLf & RichTextBox1.Text
私もガッさんと同じく「やりたいこと」を箇条書きにして整理する事をおすすめします。今回の場合リッチテキストは目的ではなくて手段の一部のような気がするので、そこもきちんと切り分けて整理しましょう。
>リッチテキストとテキストの内容を合わせてその内容を取得
>してその情報をいろいろ使用していこうと思ってます。
「いろいろ」なんて曖昧な事を書いているうちは整理できているとは言いません。
入っている文字の情報だけあればいいのですか?
それとも、元物文書の体裁を維持して丸ごと引き継いで使いたいのですか?
やりたいことが曖昧な内はコーディングのしようがありませんよ。
何も考えずに、フォームにRichTextBox1とText1を置いて
Private Sub Form_Load()
Dim FileNo As Integer
Dim FileName As String
FileNo = FreeFile
FileName = App.Path + "\Test.txt"
Open FileName For Output As #FileNo
RichTextBox1.Text = "てすと"
Text1.Text = "テスト"
Print #FileNo, RichTextBox1.TextRTF
Print #FileNo, Text1.Text
Close
End Sub
とやってみるとか。
なんか質問内容が「読み込み」からかなり脱線しているような気がしますね。
読み込めたんなら一旦スレ閉じて新たな疑問は新スレで質問したらどうですか?
皆さんがおっしゃっているように
要点をまとめてね。
実際にやりたいことをまとめると・・
・リッチテキストファイルをまず作成します。
・テキストボックス等からテキストデータを変数に格納します。
・リッチテキストボックスにリッチテキストと変数の値を入れて
表示させる
です。
ただ、リッチテキストボックスにデータを格納する際は元のデータを
壊さずに入れたいです。
例えば・・
リッチテキストファイルに "あいう(サイズ20,赤,ゴシック)"
"えお(サイズ10,緑,明朝体)"
テキストボックスのデータ "かきくけこ(フォント10,ゴシック)"
のような文字が入っていた場合,リッチテキストボックスには
"あいう(サイズ20,赤,ゴシック)"
"えお(サイズ10,緑,明朝体)"
"かきくけこ(フォント10,ゴシック)"
としてデータを入れたい訳です。
上記のコードを試してみましたがどっちかのデータがおかしくなってしまい
ました。
いや。。。だから、その質問が最初の質問と主旨が全然ちがうから
このスレで聞かないほうがいいといったんだけど。
>ファイルが通常のテキストやCSVの場合なら正しく読み込んで
>くれますがリッチテキストの場合、読み込む際文字が化けてしまいます。
>どうしたらいいか困っているので誰か教えてくれませんか?
これが最初の質問で、やりたいことはリッチテキストの内容を読み込む
ということだったんじゃないですか?
で、その目的が達成したなら(以下略
あと、一言だけ。
人から聞くのもいいけど一度ぐらいMSDNライブラリ等のヘルプを読んでね。
TextRTFを直接操作する場合は、基本的にリッチテキストが
どういう構造になっているか知らないと難しい。
Google等でリッチテキストについて調べられた方が良いのでは。
>いや。。。だから、その質問が最初の質問と主旨が全然ちがうから
>このスレで聞かないほうがいいといったんだけど。
030さん、かもめさんはTextRTFの構造を理解していなので、正しく読み込めて
いないとと判断しているのでは無いのでしょうか。
すなわち、質問の趣旨はそれはそれなりに、初めから一貫しているのでは。
そこで私は前のレスで、リッチテキストとプレーンテキストの違いを簡単に
説明するプログラムを提示したつもりですが、ちょっと回りくどかったりして。
リッチテキストボックスにテキストボックスのデータを書式も含めて
リッチテキストボックスに追加するなら、こんな感じですね。
RichTextBox1.Text = RichTextBox1.Text & vbCrLf & Text1.Text
RichTextBox1.SelStart = Len(RichTextBox1.Text) - Len(Text1.Text)
RichTextBox1.SelLength = Len(Text1.Text)
RichTextBox1.SelAlignment = Text1.Alignment
RichTextBox1.SelBold = Text1.Font.Bold
RichTextBox1.SelColor = Text1.ForeColor
RichTextBox1.SelFontName = Text1.Font.Name
RichTextBox1.SelFontSize = Text1.Font.Size
RichTextBox1.SelItalic = Text1.Font.Italic
RichTextBox1.SelStrikeThru = Text1.Font.Strikethrough
RichTextBox1.SelUnderline = Text1.Font.Underline
いろいろ曖昧な質問の連続ですいませんでした。
史上最弱の弟子さんのコードを参考にして完成しました。
ありがとうございました。
解決のチェックを入れるのを忘れてました。
ツイート | ![]() |