

Visual Basic 2008 Express Editionを使用しています。
IE上の範囲選択のHTMLテキストをテキストファイルに保存しています。
保存日時(Date型):time "文字列":moji のように保存しています。
FileOpen(n, "Data.dat", OpenMode.Append)
WriteLine(n, time, moji)
~保存されたファイルの例~
#2008-08-31 10:21:05# , "この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームが表示されます。通常のご質問、ご意見等は<A
href=""/vb/bbs/index.html"">掲示板</A>へご投稿ください。
"
このファイルを以下のように読み込もうとしています。
FileOpen(n, "Data.dat", OpenMode.Input)
Do While Not EOF(n)
Input(n, time)
Input(n, moji)
TextBox1.Text += vbCrLf & time & vbCrLf & moji & vbCrLf
Loop
ところが、HTMLの文字配列の中には、<a href="" http://・・・・ "">のようにダブルクォーテーションが含まれています。ダブルクォーテーションが2つなら、文字列として扱ってもらえると思っていましたが、文字列の終了位置として認識してしまうようです(エラーの内容から判断しました。)
ダブルクォーテーションを含む文字列の場合どのように処理したらよいでしょうか?
No.4ベストアンサー
- 回答日時:
あの?。
聞きたいんだけど。最終的な結論から言うと、どうもウエーブのページを時刻とページ内容を対にして
保存しているみだいですね。一種のログファイル的な考え方と思っていいですか?。
その時にウエーブのページの内容によって ファイルに保存した時に vbCrLf が入る
みたいで、それで今度読み込みする時に困るとの事。vbCrLf が途中に入っていな
いなら、私の答えた内容で綺麗に読めるはずです。
FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input)
Do While Not EOF(1)
time=Input(1) こちらを Input で
moji=lineInput(1) こちらを LineInput で
Loop
そこで、ウエーブのページを保存する時にvbCrLfが入らない様にすればいいのだけど。
ここで考えられるのは、ダブルクォーテーションがついている内容を保存した変数を
ファイルに書き込む時に、VBが勝手にvbCrLf をつけて保存する事はないと思うが?。
恐らく想像だが、ダブルクォーテーションがついている内容を保存した変数をファイル
に書き込む時点でvbCrLfがつくのではなくて、ファイルに書き込む以前に、既に
そのダブルクォーテーション文字を含んだ変数の中にvbCrLfの文字があるのでは?。
書き込む前に変数にvbCrLfがあれば、vbCrLfも同時に書き込まれます。
本来、ウエーブページの内容は、vbCrLfがページ内に含まれていても、無視されて
改行しない様になっており、ウエーブページの改行は<br>だった様に思う。
むしろ、ウエーブページの内容はいたる所にvbCrLfが入っている可能性が大であり
、いくら入っていてもウエーブページにはなんら差し支えない様に出来ています。
それ故、ウエーブページの内容を時刻と対に保存する時は、保存する前にウエーブページ
の保存してある変数から、vbCrLfを取り除いて保存するのが普通です。
そうでないとvbCrLfがどこに入るか分からなく、その後の読み込んで操作するプログラム
の方で大変難しくなるからです。
ファイルに保存する前に 保存する変数を
変数=replace(変数,vbCrLf,"") として vbCrLf を取り除いて保存すれば vbCrLf
は途中に入らない様に思うのですが?。一度試して頂けますか?
変数=replace(変数,vbCrLf,"") とすると、
改行がなくなり無事読み込むことができました。
私の質問に長くお付き合いしていただきありがとうございました。またよろしくお願いします。
No.3
- 回答日時:
ダブルクォーテーション付きの文字列を含むファイルを読み込む方法はとなっているので
それなら、
FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input)
Do While Not EOF(1)
time=Input(1) こちらを Input で
moji=lineInput(1) こちらを LineInput で
Loop
でよいですと伝えています。ただし
#2008-08-31 10:21:05#, 文字列(ダブルクォーテーションを含む) vbCrLF
の形でファイルに保存されていないといけないが、上の形でファイルの中が落ちていないのですか?
サンプルのデータは
#2008-08-31 10:21:05# , "この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームが表示されます。通常のご質問、ご意見等は<A
href=""/vb/bbs/index.html"">掲示板</A>へご投稿ください。
で、
#2008-08-31 10:21:05#,"この記事・・・ご意見等は<A vbCrLf <===ここで改行
href=""/vb/bbs/index.html"">掲示板</A>へご投稿ください。
と文字列の途中で改行文字が入っていますが、この改行文字をどうこうするとの事なのですか?
上の読み込むファイルを作るソースがどの様になっているのかわかりませんが、
それは、元の読み込むファイルを作るソースの問題ではないのですか?。
質問内容からは、ダブルクォーテーション付きの文字列を含むファイルを読み込む方法はとなっているので
その様に答えていますが。
それなら、質問内容は、ファイルを書き込む時に ダブルクォーテーションを含む文字列を書き込む時に
途中で改行文字が入るのを入らない様にしたいとの事ではないのですか?。
この回答への補足
ご回答ありがとうございます。
ご指摘の通り、WriteLineで時間(Date型)、文字列(String型)を保存していますが、テキストファイルを開いてみると、途中に改行文字が多く入っていました。
質問当初は、改行文字が入っていることには気づかず、input関数で読み込もうとしていましたので、いつもダブルクォーテーションのところでエラーが起こっていました。
No.2
- 回答日時:
時間と文字の2項目で読みたいことですか?
それなら下の内容でどうですか?。
FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input)
Do While Not EOF(1)
time=Input(1) こちらを Input で
moji=lineInput(1) こちらを LineInput で
Loop
この回答への補足
ウェブページのinnerHTMLを抜き出して文字列変数に入れていますが、テキストファイルに保存した段階で、改行文字が途中で書き込まれてしまうようで、それでうまくいきません。
以前教えていただいたlininput(1)だけで読み取りをしても、うまくいかなくなってしまいました。前はうまくいっていたような気もしましたが。
No.1
- 回答日時:
行単位で読み込みすれば、そのままダブルクォーテーション
も読み取れます。
FileOpen(1, "C:\sbj\aaaa.txt", OpenMode.Input)
Do While Not EOF(1)
cm=lineInput(1)
cm=lineInput(1)
Loop
この回答への補足
ご回答ありがとうございます。
試してみましたところ、行単位で読み取れました。
ただ、質問分が少し曖昧だったため、少し目的のこととは違いました。
時間と文字列の配列をファイルに保存して、読み込むときもまた2つの変数に分けて読み込みたいと思っています。
ためしに、Writeで書き込んで、Inputで読み込んでみましたが、やはりダブルクォーテーションが含まれるとうまくいきませんでした。
また、回答文ではcm=linInput(1)を2行記されていますが、これは誤植だと思っていますがどうでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】マクロの入ったファイル...
-
オートシェイプを画像ファイル...
-
eclipseの保管が押せない!
-
エクセルでファイルを閉じるボ...
-
サポートされたファイル形式お...
-
PC内で速度を遅くした音源をCD...
-
e-taxで送信ファイルの拡張子が...
-
PDFファイルの倍率を変えて保存...
-
個別に違う添付ファイルを付け...
-
eclipseでタブ入力ができなくな...
-
USBメモリーで無線でPC転送でき...
-
A4の紙に印刷されている文字を...
-
シェイプ上で矢印キー(右、左...
-
拡張子「.IDJ」を、windo...
-
USBメモリとSSDのデータの保存...
-
リストビューの選択状態を取得...
-
ローカル上とネット上で保存し...
-
エクセルで「特定の文字を含む...
-
Visual Basic.NETの、Form 間で...
-
2枚、マイクロSDカードを入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】マクロの入ったファイル...
-
fireworksでjpeg保存可?初心者...
-
エクセルでファイルを閉じるボ...
-
VBSでファイルを指定のフォルダ...
-
WebBrowserにHTMLテキストを読...
-
VB 2005 色データの保存、読出...
-
AS3.0で,外部ファイルにデータ...
-
VBScript ワードunicodeテキス...
-
Emacsで保存ができない
-
HTMLでアンカーをはりPowerPoin...
-
UWSCでエクセルファイルのみを...
-
文字「~」を使っているとJS...
-
PHPによるMySQLを使ったアップ...
-
Flashのファイルは壊れやすい?
-
オートシェイプを画像ファイル...
-
リストボックスの保存方法を教...
-
EXCEL/VBAでWORDファイル名の先...
-
FlashLite2.0 でのSharedObject...
-
eclipseの保管が押せない!
-
イラストレーターで作成した絵...
おすすめ情報