2

MSXML で見られる例のほとんどは Javascript または JQuery に関係していますが、どちらも使用しない Excel 2010 マクロを作成しています。

私の目標は、(以下に示すように) ファイルをダウンロードし、中サイズ (5 から 15 MB) の CSV ファイルを解析することです。最終的には、非表示のデータ タブに CSV データを保存したいと考えています。

こちらのCSV VBA サンプルで少し作業を進めましたが、MSXML.ResponstText の出力をそのサンプルに貼り付ける方法がわかりません。

ここに私のVBA /マクロコードがあります

Set objHttp = CreateObject("MSXML2.ServerXMLHTTP")
'objHttp.SetRequestHeader "Content-Type", "text/csv"
'objHttp.SetRequestHeader "charset", "gb2312"
Call objHttp.Open("GET", fileURL, False)
Call objHttp.Send("")
'Call MsgBox(objHttp.ResponseText)

Excel で ResponseText を操作し、一度に 1 行しか読み取れないようにするにはどうすればよいですか?

4

2 に答える 2

1

私は、物事を混ぜないでください。最初に CSV ファイルをダウンロードしてから読み取ります。

あなたの質問から、あなたの目標が何であるかは明らかではありません。ファイルを解析したい場合は、ネイティブ VBA ステートメントを使用して、次のように 1 行ずつ読み取り、解析できます。

Dim filePath As String
Dim fn As Integer
Dim myLine As String
Dim myParsedLine() As String

filePath = "C:\DatabaseWeeklyStats.csv"

fn = FreeFile()
Open filePath For Input As #fn
Do Until EOF(fn)
    Line Input #fn, myLine
    myParsedLine = Split(myLine, ",")
    ' Line is now parsed. Do stuff.
Loop

ワークブックの新しいシートに CSV ファイル全体を貼り付けたいだけで、必ずしも事前に "解析" (つまり、その内容を解釈) する必要がない場合は、次のようにすることができます。

Dim dbSheet As Worksheet
Dim targetSheet As Worksheet

Workbooks.Open Filename:="C:\DatabaseWeeklyStats.csv", _
    Format:=2 ' use comma delimiters
Set dbSheet = ActiveSheet

Set targetSheet = Workbooks("Book1").Sheets(3) ' wherever you want to move it to

dbSheet.Move After:=targetSheet
' dbSheet is now in your workbook.

' Hide it.
Set dbSheet = ActiveSheet
dbSheet.Visible = xlSheetHidden
于 2011-12-06T08:42:35.410 に答える
1
Dim opener As New FileSystemObject
Dim fContainer

Set fContainer = opener.OpenTextFile("c:\DatabaseWeeklyStats.csv")

Do Until fContainer.AtEndOfStream
    sText = fContainer.ReadLine
    Debug.Print sText
Loop

' これには Microsoft Scripting Runtime への参照が必要です

于 2011-12-06T04:37:40.477 に答える