简体   繁体   中英

Read from a web page and using two determiner for new row and next cell in vba excel

I am looking for a way to read from a feed webpage which its structure is something like

A,B,C;E,F,G;....

I want to read this data and put AB and C in the first row and put EF and G in row 2, and etc.

I was looking for a function in VBA, but most of them are for only one determiner.

I also was thinking of using string functions of VBA, which that would be the last resort! Since I must read a long string and then use a cursor (which I don't know if it is like c or not!) that probably leads to unstable performance because first I don't know the volume of data, and second I want to use it in a loop.

Could you please help me with the best solution?

feed = "A,B,C;E,F,G;...."

CSV = Replace( feed, ";", vbNewLine )
TSV = Replace( CSV , ",", vbTab )

Set do = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") ' this is a late bound MSForms.DataObject
do.SetText TSV
do.PutInClipboard

ActiveSheet.Paste

在此处输入图片说明

Sub Test()
    ParseString1 "A,B,C;D,E,F;G,H,I,J,K,L"
    ParseString2 "A,B,C;D,E,F;G,H,I,J,K,L"

End Sub

Sub ParseString1(data As String)
    Dim clip As MSForms.DataObject
    Set clip = New MSForms.DataObject

    data = Replace(data, ",", vbTab)
    data = Replace(data, ";", vbCrLf)

    clip.SetText data
    clip.PutInClipboard

    Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial

End Sub

Sub ParseString2(data As String)
    Dim aColumns, aRows
    Dim x As Long
    aRows = Split(data, ";")

    For x = 0 To UBound(aRows)
        aColumns = Split(aRows(x), ",")
        Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(1, UBound(aColumns) + 1) = aColumns
    Next

End Sub

You'll need to set a reference to the Microsoft Forms 2.0 Object Library if you use ParseString1.

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM