从HTML(Web)表中提取/复制选定的数据并删除不需要的列 - Excel VBA

时间:2015-08-04 17:09:22

标签: excel vba excel-vba

我尝试创建一个宏,将HTML(Web)表中的数据提取/复制到Excel,并删除某些列并从复制的HTML表中复制特定数据。这个过程将是;

  1. 突出显示整个HTML表格,然后复制。
  2. 点击按钮粘贴到Excel中。 (粘贴顺序必须基于每列上面的字母)
  3. 请帮助我,因为我是VBA的新手。

    这将是excel中的格式;

    -              a               b              c               d
    

    excel

    虽然这是表格式HTML(仅限样本)。 HTML表每页有10行,日期列也有文本内容,但我只需要日期和时间 - 不知何故它只需要过滤' yyyy-mm-dd hh:mm:ss'数据

    -          a       c       -       -       -       -       -       b      -        d
    

    enter image description here

    我这里有一个示例代码:

    Sub Paste()
    
          Application.ScreenUpdating = False
    
          Range("XEY1").Select
          ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
    
          y = 4 
          While Not Range("A" & y) = ""
                y = y + 1
          Wend
    
          d = Range("XEY3")
          Range("A" & y) = Replace(Mid(d, InStr(d, "(") + 5, InStr(d, ")") - InStr(d, "(") - 5), " CET", "")
          Range("F" & y) = Range("XEY11")
          Range("G" & y) = Range("XEY18")
    
    
          ActiveSheet.Range("XEY1:XEY50").Clear
    
          Application.ScreenUpdating = True
     End Sub
    

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我能够发现这将如何发生。

代码:

Option Explicit
Sub Button11_Click()
Application.ScreenUpdating = False
Dim j As Integer, b As Integer, r As Integer, g As String

Range("XET1").Select
ActiveSheet.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True

j = 6
b = 1

For r = 5 To 1000
    If ActiveSheet.Cells(r, 5).Value <> "" Then

        Range("C" & j).Value = Range("XEU" & b).Value
        g = Range("XEV" & b)
        Range("E" & j).Value = Replace(Mid(g, InStr(g, "(") + 5, InStr(g, ")") - InStr(g, "(") - 5), "CEST", "")
        Range("D" & j).Value = Replace(Mid(g, InStr(g, "") + 38, InStr(g, ")") - InStr(g, "(") + 25), "REQ", "")
        Range("F" & j).Value = Range("XFD" & b).Value

    j = j + 1
    b = b + 1
   End If
Next r

ActiveSheet.Range("XET1:XFD50").Clear
Application.ScreenUpdating = True
End Sub