1

これはシンプルであるべきだと感じます。コンピューターに .HTML ファイルが保存されていて、ファイル全体を文字列に読み込もうとしています。超簡単にやってみると

Dim FileAsString as string 

Open "C:\Myfile.HTML" for input as #1
Input #1, FileAsString
Close #1

debug.print FileAsString

ファイル全体を取得できません。最初の数行しか取得できません (すぐにウィンドウが切れることはわかっていますが、それは問題ではありません。ファイル全体を文字列に取り込んでいるわけではありません。) また、ファイル システム オブジェクトを使用する別の方法を使用してみました。同様の結果が得られましたが、今回は多くの奇妙な文字と疑問符が投入されました。これは、おそらく何らかのエンコードの問題であると思われます。(率直に言って、私はそれが何を意味するのか完全には理解していません。さまざまなエンコード形式があり、これが文字列の解析で問題を引き起こす可能性があることは知っていますが、それだけです。)

より一般的には、ここで私が本当に知りたいことは次のとおりです。vba を使用して、任意の拡張子 (テキスト エディターで表示できる) と長さ (VBA の文字列制限を超えない) のファイルを開く方法を教えてください。基本的なテキスト エディターで表示される文字が文字列に読み込まれることを確認してください。(それが(簡単に)できない場合は、.htmlファイルで機能する可能性が高い方法を指摘していただければ幸いです)ご協力いただきありがとうございます

編集:提案された方法を使用するとどうなるかの例を次に示します。具体的には

    Dim oFSO As Object
    Dim oFS As Object, sText As String

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFS = oFSO.OpenTextFile(Path)

    Do Until oFS.AtEndOfStream
        sText = oFS.ReadAll()
    Loop
    FileToString = sText

    Set oFSO = Nothing
    Set oFS = Nothing

End Function

最初 (メッセージ ボックス経由) と最後 (即時ウィンドウ経由) の両方をお見せします。どちらの場合も、クロムで表示された html ソースのスクリーン キャプチャと比較します。

始まり: ここに画像の説明を入力

ここに画像の説明を入力

終わり: ここに画像の説明を入力

ここに画像の説明を入力

4

3 に答える 3

5

これは一つの方法です

Option Explicit

    Sub test()

    Dim oFSO As Object
    Dim oFS As Object, sText As String

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFS = oFSO.OpenTextFile("C:\Users\osknows\Desktop\import-store.csv")

    Do Until oFS.AtEndOfStream
    ' sText = oFS.ReadLine 'read line by line
    sText = oFS.ReadAll()
    Debug.Print sText
    Loop
    End Sub

編集:

次の行を次の 3 行のいずれかに変更してみて、違いがあるかどうかを確認してください。

http://msdn.microsoft.com/en-us/library/aa265347(v=vs.60).aspx

Set FS = FSO.OpenTextFile("C:\Users\osknows\Desktop\import-store.csv", 1, 0)
Set FS = FSO.OpenTextFile("C:\Users\osknows\Desktop\import-store.csv", 1, 1)
Set FS = FSO.OpenTextFile("C:\Users\osknows\Desktop\import-store.csv", 1, 2)

EDIT2:

このコードは役に立ちますか?

Function ExecuteWebRequest(ByVal url As String) As String

    Dim oXHTTP As Object

    Set oXHTTP = CreateObject("MSXML2.XMLHTTP")
    oXHTTP.Open "GET", url, False
    oXHTTP.send
    ExecuteWebRequest = oXHTTP.responseText
    Set oXHTTP = Nothing

End Function

Function OutputText(ByVal outputstring As String)
    MyFile = ThisWorkbook.Path & "\temp.html"
    'set and open file for output
    fnum = FreeFile()
    Open MyFile For Output As fnum
    'use Print when you want the string without quotation marks
    Print #fnum, outputstring
    Close #fnum
End Function

Sub test()
Dim oFSO As Object
Dim oFS As Object, sText As String
Dim Uri As String, HTML As String

    Uri = "http://www.forrent.com/results.php?search_type=citystate&page_type_id=city&seed=859049165&main_field=12345&ssradius=-1&min_price=%240&max_price=No+Limit&sbeds=99&sbaths=99&search-submit=Submit"
    HTML = ExecuteWebRequest(Uri)
    OutputText (HTML)

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oFS = oFSO.OpenTextFile(ThisWorkbook.Path & "\temp.html")

    Do Until oFS.AtEndOfStream
    ' sText = oFS.ReadLine 'read line by line
    sText = oFS.ReadAll()
    Debug.Print sText
    Loop

End Sub

ここに画像の説明を入力

于 2013-08-17T08:17:21.440 に答える
2

さて、私はついにこれを理解することができました。VBA ファイル システム オブジェクトは asciiIII ファイルのみを読み取ることができ、私は自分のファイルを Unicode として保存しました。私の場合のように、asciIII ファイルを保存するとエラーが発生することがあります。ただし、ファイルをバイナリに変換してから文字列に戻すことで、これを回避できます。詳細はこちらhttp://bytes.com/topic/asp-classic/answers/521362-write-xmlhttp-result-text-fileで説明されています。

于 2013-08-20T03:33:40.713 に答える