■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#18944-0htmlソースファイル内容読み込みHarry2001-11-28(水) 12:37
     #18946-0RE#18944:htmlソースファイル内容読み込みDuck2001-11-28(水) 13:00
     #18947-0RE#18944:htmlソースファイル内容読み込みせつら2001-11-28(水) 13:01
     #18950-0RE#18947:htmlソースファイル内容読み込みろってんまいあ2001-11-28(水) 13:22
     #18952-0RE#18944:htmlソースファイル内容読み込み匿名189522001-11-28(水) 13:26
     #18953-0RE#18944:htmlソースファイル内容読み込み魔界の仮面弁士2001-11-28(水) 13:31
     #18963-0RE#18953:htmlソースファイル内容読み込みHarry2001-11-29(木) 00:37
#18944-0
htmlソースファイル内容読み込み
初めて質問させていただきます。
よろしくお願いします。
htmlファイルの内容をVBで読み込む場合に改行毎に読み込むのはどうすればいいのでしょうか?
htmlをワードパッドで開くと各単位で改行され見やすいですが、メモ帳で開くと改行されずに1行?で
表示されてしまいます。メモ帳では改行部に”・”の記号が表示されている様です。
VBの変数に読み込む場合にLineInputのコマンドを使うとメモ帳の表示の様にしか読み取れません。
ワードパッドの表示の様に各改行単位で内容を読み取る良い方法があるのでしょうか?
教えてください。
#18946-0
RE#18944:htmlソースファイル内容読み込み
> htmlファイルの内容をVBで読み込む場合に改行毎に読み込むのはどうすればいいのでしょうか?
> htmlをワードパッドで開くと各単位で改行され見やすいですが、メモ帳で開くと改行されずに1行?で
> 表示されてしまいます。メモ帳では改行部に”・”の記号が表示されている様です。
それは、そのHTMLファイルの改行コードが 0x0A(LF)なのでしょう。
UNIXかなにかで作られたファイルなのでは?

Windows環境での改行コードは 0x0D + 0x0A (CR + LF)なので、メモ帳で開くと改行ができないのです。
ワードパット等の高機能なテキストエディタはその辺の改行コードの違いはうまく吸収してくれるので、
きちんと改行して表示されます。

> VBの変数に読み込む場合にLineInputのコマンドを使うとメモ帳の表示の様にしか読み取れません。
> ワードパッドの表示の様に各改行単位で内容を読み取る良い方法があるのでしょうか?
> 教えてください。
Input Line は CR+LFまでを読み込むようになっているので、
手動でファイルの改行コードを直してあげるか、
1バイトずつ読み込んで、0x0Aまでを1行として処理しましょう。
#18947-0
RE#18944:htmlソースファイル内容読み込み
MultiLine プロパティ、と思いましたが、そうではなくて、改行コードの違いのせいみたいですね。

WINDOWS の改行コードは、CR + LF の2バイトなのですが、unix 系等では LF だけだったりする
のです。 フリーウエアのバイナリエディタを探し、これでファイルを直接16進ダンプしてみて
ください。 普通は CRLF で 0D 0A ですが、0A だけになっていませんか?

以下は、コードを変換してから表示する例です。

Private Sub Command1_Click()
    Dim cw As String

    Open "c:\aaa.htm" For Input As #1
    Line Input #1, cw
    Close #1
    Text1.Text = Replace(cw, vbLf, vbCrLf)
End Sub
#18950-0
RE#18947:htmlソースファイル内容読み込み
> MultiLine プロパティ、と思いましたが、そうではなくて、改行コードの違いのせいみたいですね。
> 
> WINDOWS の改行コードは、CR + LF の2バイトなのですが、unix 系等では LF だけだったりする
> のです。 フリーウエアのバイナリエディタを探し、これでファイルを直接16進ダンプしてみて
> ください。 普通は CRLF で 0D 0A ですが、0A だけになっていませんか?

補足、マッキントッシュでは行末は 0D です
マッキントッシュユーザーが作成した物のでタマに行末が 0D になっている物があります

取り合えず、全てオッケーな様に考慮しておきましょう

では、頑張ってくださいね
#18952-0
RE#18944:htmlソースファイル内容読み込み
> htmlファイルの内容をVBで読み込む場合に改行毎に読み込むのはどうすればいいのでしょうか?

以下のようにすると、読み込むときの文字コードや改行コードを指定する事ができます。

    Const adCRLF = -1
    Const adLF = 10
    Const adCR = 13
    
    Const adReadAll = -1
    Const adReadLine = -2
    
    With CreateObject("ADODB.Stream")
        .Open

        '文字コードの指定
        .Charset = "EUC-JP" '他には、"Shift_JIS"とか"ISO-2022-JP"とか

        'ファイルの読み込み
        .LoadFromFile "C:\test.html"
        
        '改行コードの指定
        .LineSeparator = adLF
        
        '先頭の一行を読み込みます。
        'adReadAllを指定すると、テキスト全体を読み込みます。
        '自然数を指定すると、文字単位で読み込まれます。
        Debug.Print .ReadText(adReadLine)

        .Close  '終了
    End With
#18953-0
RE#18944:htmlソースファイル内容読み込み
> htmlファイルの内容をVBで読み込む場合に改行毎に読み込むのはどうすればいいのでしょうか?

一度、全データを読み込み、改行コードを変更しては如何でしょう。
            
Dat = 元データ
Dat = Replace(Dat, vbCrLf, vbLf)
Dat = Replace(Dat, vbCr, vbLf)
Dat = Replace(Dat, vbLf, vbCrLf)

上記の4行を使えば、元データが Cr改行、CrLf改行、Lf改行 の
いずれであっても、全てCrLf改行のデータへと変換できます。
#18963-0
RE#18953:htmlソースファイル内容読み込み
さっそくたくさんの方にアドバイスいただいてありがとうございました。

頂いた返信を元にいろいろ試してみました。
まず、改行のコードをバイナリーエディターで確認すると0x0Aになっていまいした。
どうも問題にしているhtmlファイルはWindows環境以外で作られたもののようです。
そこでアドバイス頂いた様にReplace関数を使って
    Open "c:\aaa.htm" For Input As #1
    	Line Input #1, temp$
    Close #1
    Open "c:\aaa.htm" For Output As #1
    	Print #1, Replace(temp$, vbLf, vbCrLf)
    Close #1
とする事でメモ帳でも見れるファイルに置き換える事ができました。
もちろんLine Input #で一行毎に読み込める様になりました。

ちなみにマッキントッシュで作られたファイルであれば
	Print #1, Replace(temp$, vbCr, vbCrLf)
とすれば同じ事が出来るとのことですね。
いろいろなファイルに対応する必要が出てきた場合には
> Dat = 元データ
> Dat = Replace(Dat, vbCrLf, vbLf)
> Dat = Replace(Dat, vbCr, vbLf)
> Dat = Replace(Dat, vbLf, vbCrLf)
の方法も試して見ます。

ActiveX オブジェクトを利用する方法については勉強不足のため理解出来ていません。
これからチャレンジしてみます。

みなさんありがとうございました。
このページと関連する記事:
#21351-0読み出しの時間2001-06-14(木) 07:00
#52-3改行コードについて2003-11-06(木) 16:13
#635-1改行コード2002-05-29(水) 07:56
#21316-0ファイルオープン時に改行コードを自動認識させるには?2002-06-26(水) 19:35
#8317-01行単位のファイル内容の取得について2000-03-07(火) 22:55
#4011-0*.txtを読み込むには?1999-12-03(金) 12:07
#29014-0使い方を教えて下さい。2000-08-31(木) 11:51
#2720-1高速なファイルからの読み込み(1行ずつ)法1999-08-05(木) 17:14
#38829-0Inetコントロールで取得後の処理2001-02-15(木) 00:04
#8319-01行単位のファイル内容の取得について2000-03-07(火) 23:09
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)