リッチテキストボックスでの書式付と書式無しの判断方法とは?

このQ&Aのポイント
  • リッチテキストボックスについて教えてください。日報のようなものを作成しようと思い、フォームにRichTextboxを配置して一日分を1ファイルとして保存するようにしました。
  • 読み込みは rich.LoadFile MyPath & filename, rtfRTF でやるように設定しました。書式付テキストでない場合は普通に「~.txt」で保存して、書式付の場合だけ「~.rtf」で書き込みをする、また両者を見分けて読み込み表示をさせる方法が分かりません。
  • 書式付テキストの場合は普通のテキストよりもサイズが大きくなってしまいますが、一ヶ月もすればサイズが累積してしまいます。小さなサイズで累積する方法があるか教えてください。
回答を見る
  • ベストアンサー

リッチテキストボックスでの書式付と書式無しの判断をする方法について

リッチテキストボックスについて教えてください。 日報のようなものを作成しようと思い、フォームにRichTextboxを配置して 「 (当日の日付) + .txt 」あるいは「 (当日の日付) + .rtf 」の形式で 一日分を1ファイルとして保存するようにしました。 セーブは rich.SaveFile MyPath & filename, rtfRTF 読み込みは rich.LoadFile MyPath & filename, rtfRTF  で やるように設定しました。 (全然分からなかったのですが、VBの本で調べました。) で、この読み書きのところなのですが、書式付テキストでない場合は 普通に「~.txt」で保存して、書式付の場合だけ「~.rtf」で書き込み をする、また両者を見分けて読み込み表示をさせる方法が分かりません。 教えてください。 それと、書式付テキストの場合は普通のテキストよりもサイズが大きく なってしまいますが、日報では一日1ファイルにしているので、一ヶ月も すれば合計サイズが30KB~60KBにもなってしまいます。 これをなるべく小さなサイズで累積するような方法はないでしょうか? どなたか是非お教えください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

別のリッチテキストに.Textをコピーして.TextRTFを比較してみるとか Private Sub Command1_Click() RichTextBox2.Text = RichTextBox1.Text If (RichTextBox2.TextRTF = RichTextBox1.TextRTF) Then MsgBox "テキストで保存するべし" Else MsgBox "RTFで保存するべし" End If End Sub

fujiyama2002
質問者

お礼

ご回答ありがとうございます。 なるほど、そういう手もあるんですね。TextRFTというところが 全く分からなかったので、とても助かります。 早速この方法で試してみます! ありがとうございました。

fujiyama2002
質問者

補足

こんばんは。 早速試してみました。 バッチリです。 ほんとにTextRTFというのは知りませんでした。確かに入力候補では出てくる みたいですが、初めて見ました。こういうのがなかなかVBの本なんかでも 出てないんですよね。 私の購入するのは初心者向けばかりなので、そのせいだとは思うのですが。 今回はありがとうございました! ではでは。

関連するQ&A

  • VB 2005 リッチテキストボックス 文字選択

    Visual Basic 2005 Express Editionを使っています。 趣味程度以下のレベルです。よろしくお願い致します。 質問の内容は、リッチテキストボックスの内容を選択(反転表示)して クリップボードに記憶させるコードを知りたいのです。 今、作っているのは、 Formの真ん中に、大き目のリッチテキストボックスを配置して 下にボタンを3つ配置しています。 ボタン1は (1)テキストボックスに"c:\mail\aaa.txt"を表示する。 (2)Cドライブのmailフォルダからaaa.txtをリッチテキストボックスに表示。 TextBox1.Text = "c:\mail\aaa.txt" RichTextBox1. LoadFile(TextBox1.Text, RichTextBoxStreamType.PlainText) と言うふうにしています。 同様に、ボタン2は bbb.txtをリッチテキストボックスに表示、 ボタン3はccc.txtをリッチテキストボックスに表示するようにしています。 使用方法としては、取引先とメールのやり取りを行う際に、 メールのパターンが3種類あって、これまでは、aaa.txtをメモ帳で 開いてはコピペしてメーラーに貼り付け。bbb.txtをメモ帳で開いては メーラーに貼り付け。を繰り返していました。 クリップボードに記憶させるのは、 Clipboard.SetDataObject(RichTextBox1.SelectedText) で、うまく行きましたが、クリップボードに記憶させる文字の選択は 手動でやっています。 また、文字の選択というのは、リッチテキストボックスに表示された、 文字を抜き出して選択するわけではなくて、表示されている全てを 選択(反転文字)にしたいのです。 わかりにくい説明で申し訳ありませんが、よろしくお願い致します。

  • RichTextboxでのフォントの指定方法について

    ふと疑問に思ったので教えてください。 リッチテキストボックスでのフォントの指定についてなのですが、 「プロパティ」でフォントのサイズや字体を指定することは可能 ですが、ファイルとして保存する時に「*.RTF」ではなく、「*.TXT」 として保存した場合、どこか別のファイルに終了時のフォントサイズ、 字体の設定を保存しておき、今度起動してそのファイルを開く時に 設定ファイルを読み込んで、そのサイズ、字体でリッチテキスト ボックスに表示させるということは可能なのでしょうか? Form_Load で設定を読み込んで指定するというコードはあるので しょうか? 例えば Richtextbox.fontsize=15 のような指定はあるのでしょうか? もちろん Richtextbox.fontsize=15 はダメでしたが、こんな感じで 指定できるのでしょうか?

  • MLionのテキストエディット.appの設定変更?

    mountain lion (os x 10.8)のテキストエディットに関して 2点教えていただけませんでしょうか? ご存知の方、どうかよろしくお願いいたします。 1. 起動時に表示される、 「テキストエディット で iCloud」 のウィンドウを表示させないようにする設定 2. 新規ファイルの書式を、 リッチテキスト(.rtf)から標準テキスト(.txt)に 変更する設定

    • ベストアンサー
    • Mac
  • エクセル2010 ユーザー定義の書式で表示したい

     新年、明けましておめでとうございます。    年明け早々にお世話になります。  "'"yy"年"mm"月"dd"日" の書式の西暦の日付に続けて、スペースなしでシート名を表示したいので、  お分かりになる方、ご教示よろしくお願いします。  例えば、日付が2014年1月2日(編集当日の日付ではありません)でシート名がABCDなら、  2014/01/02 のみの入力値に対して   '14年1月2日ABCD  をD6セルに表示させたいです。  現時点で、  =RIGHT(CELL("filename",A2),LEN(CELL("filename",A2))-FIND("]",CELL("filename",A2)))  を特定の書式を設定していないD8セルに入力して、D8セルにシート名の表示はできていますが、  日付を表示させようとして、ユーザー定義の書式でロックされていないD6セルに  'yy"年"mm"月"dd"日" を設定し、2014/01/02 を入力したところ、# が表示されて、  頓挫しています。  本来なら、D6セルに日付とシート名を表示させたいのですが、  D6セル、D8セルのいずれも  ユーザー定義の書式だと期待した表示結果が得られない状態です。  何故、日付表示さえうまく行かないのか、この点も解説頂けたら有難いです。  年明け早々にお手数で恐縮ですが、よろしくお願いします。

  • VS2012での\(円マーク)とバックスラッシュ

    VS2012のVBでコードを書きはじめました。OSはWin7(x32) 日本語です。 ファイルを呼び出そうと思っても呼べずに困っています。 FileName = "c:\textfile.txt" ret = LoadFile(FileName) としたときに、”textfile.txt“にアクセスできないのは、デバッグモードで実行したときに”\”がバックスラッシュとして扱われているからではないかと疑っています。 原因を探っていくうちに下記を疑い始めました。 Dim FileName As String FileName = "\" として、デバッグモードでFileNameの値を見ると円マークではなくバックスラッシュになっています。 しかし、FileNameの値をテキストボックスに出力させると円マークです。 (1)このような状態でもパス名に問題は無いのでしょうか ⇒どちらも同じASCIIコード92だから、内部で92を渡すだけだから問題ない? (2)Visual studio内でキーボードを選択する部分があるのでしょうか?

  • EXCEL 2003のVBAでテキストファイルの取り込み方

    EXCEL 2003のVBAでテキストファイルの取り込み方 EXCEL 2003のVBAでテキストファイルのみをとりこむものを組もうと思います。 - 読み込むテキストファイル名は一定の決まりがあります。AAxxxx.txt あるいは ZZxxx.txt といった感じで先頭文字はAAまたはZZで中のxxxは数字の可変(日付)です。 - Directoryはどこに入るか決まりがありません。(このマクロを使用するユーザーがどこのDirectoryにテキストファイルを保存しているかわからないため) FILEN = Application.GetOpenFilename If FILEN = False Then Exit Sub End If Workbooks.OpenText Filename:=FILEN でやると、Directoryの問題は解決しますが、テキストファイル名を絞り込めません いい方法をご教示いただければ助かります。

  • エクセルのマクロでテキストを生成すると日付の表示書式が変わってしまう

    エクセルのシートをマクロを実行してテキストファイルを生成します。 マクロの記述は以下の通りです。 保存 ChDir "C:\Documents and Settings\All Users\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\All Users\デスクトップ\YA-SWK.txt", FileFormat:= _ xlCSV, CreateBackup:=False '終了 Application.Quit End Sub 元データのエクセルのシートに「2006/9/1」と入力されているセルがあるのですが、マクロを実行して生成されたテキストファイルでは「9/1/2006」と日付の表示順序が変わってしまいました。 この原因は何であるのかつかめません。 よろしくお願いします。

  • ある文字列を検索するボタンのつくりかた

    あるテキストファイル(*.txt)の内容をテキストボックスに表示するボタンを作りました。さらに、このテキストファイルの内容の中から、決まった文字列のみを表示できるようにしたい(例.abcdefgと書かれたテキストに対してbcdのみ抜き出す)のですが、どうすれば良いのでしょうか。初心者なので、簡単にできる方法があれば教えてください。 <現在のコード> Dim myFile As String Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist '既存ファイルのみ読み込み CommonDialog1.ShowOpen If CommonDialog1.FileName = "" Then Exit Sub myFile = CommonDialog1.FileName FileRead Form1.Caption = "Form1 " & myFile End Sub Private Sub Form_Load() Form1.Height = 3510 End Sub Private Sub FileRead() Dim buf As String On Error GoTo ErrTrap1 Open myFile For Input As #1 RichTextBox1.Text = "" While Not EOF(1) Line Input #1, buf RichTextBox1.Text = RichTextBox1.Text & buf & Chr(13) & Chr(10) Wend Close #1 Exit Sub ErrTrap1: MsgBox Err.Description Err.Clear End Sub

  • エクセルVBA セルの書式につい

    ユーザーフォームのテキストボックスに入力した日付(yyyy/mm/ddの形式)をA1セルに入れるとします。  Range("A1").Value = Me.txt日付 A1セルの表示形式は書式設定でユーザー定義の"d"で表示されるように設定していますが、 テキストボックスに入力した形式のまま(yyyy/mm/dd)でA1セルに表示されてしまいます。 上記のみではNGでしょうか? ちなみに、yyyy/mm/ddと入力されたA1セルを一旦編集モード([F2]キーを押した状態)にして[Enter]を押すと"d"(書式設定で指定している書式)に変わります。 参考:A1セルの日付をみて別シートの一覧からVlookup関数で値を検索したいところが、yyyy/mm/ddで表示されるためにエラーとなってしまいます) ご存知の方教えていただきたいです。

  • 再び Accessフォームのテキストボックス表示方法 の質問です

    番号847117 日付04-05-03-11-37 で下記に質問をして下記のような回答いただきました。 Access2002です。フォームにテキストボックスを作りそこに温度を表示したいのです。 テーブルのデーター型は数値型、 フイールドサイズは単精度浮動小数点型 書式は数値 数値は小数点以下表示桁数1にしてあります。 テキストボックスのプロパテイの書式に##.#Cと書くと何故か最初の#が消えて#.#Cになってしまい例えば0.9Cが最初の0が抜けて.9Cと表示されてしまいます。 書式を数値、固定、標準にすると今度はCが書けません。尚小数点以下表示桁数は1にしてあります。 要は例えば0.9を0.9Cと表示したいのです。 宜しくお願いします。 この質問に対する回答は締め切られました 回 答 No.1 0.0C でOKです。 (詳細は、ヘルプで「Format関数」→「関連項目」→「数値表示書式指定文字 (Format 関数)」を参照) この回答で確かに私の希望のどうりになりましたが、(毎日の温度を記録している)今度は未だ温度を入力してない今日のフォーム入力画面を開くと温度の所に0.0Cと入ってしまっています。ですから今日の温度をこの上から訂正しなければなりません。今日のフォームを開いたときこのBOX表示は空欄で尚かつ上記の希望どうりX.XCにはならないでしょうか。 宜しくお願いします。

専門家に質問してみよう