本文目录一览:

excel VBA 网页数据抓取

首先打开Excel 2007工作表,点击想要把数据导入的位置,然后在菜单栏找到第五项"数据“,点击,在“获取外部数据”项下找到“自网站”并点击。

这时弹出来”新建 Web 查询“对话框,可以在“地址”一栏键入要添加数据的网页的地址。

添加完成后,点击“转到(G)”,下面会出来要添加网页的内容和黄色箭头,单击要选择的表旁边的黄色箭头,可以看到点击后黄色箭头变成绿色的对号,这表示内容已经选中了,然后单击“导入(I)”。

弹出来”导入数据“对话框,设置完成点击“确定”。

Excel表中显示“正在获取数据……”。

数据获取完成,之前选中的网页内容全部导入了Excel工作表里。

vba如何抓取网页上的数据

代码:

Private Sub CommandButton1_Click()

Dim IE As Object

Dim i As Integer

i = 1

'打开网页:创建一个IE对象,然后给一些属性赋值。Visible是可见性,navigate是网页地址

Set IE = CreateObject('internetexplorer.application')

With IE

.Visible = True

.navigate ''

'等待网页完全加载

Do Until .ReadyState = 4

DoEvents

Loop

'拷贝汉字到网页文本框,然后点击转换按钮,并取出转换结果

Do While Sheets('sheet1').Cells(i 1, 1).Value ''

'从IE.Document.all句柄中把页面上要使用的节点找出来。这里的方法是:

.document.all('source').Value 给以source为ID的文本框赋值

.document.all.tags('img')(1).Click 点击图片集合里的第二张图片

.document.all('to').Value 取出以to为ID的文本框内容

.document.all('source').Value = Sheets('sheet1').Cells(i 1, 1).Value

.document.all.tags('img')(1).Click

Do Until .ReadyState = 4

DoEvents

Loop

Sheets('sheet1').Cells(i 1, 2).Value = .document.all('to').Value

i = i 1

Loop

'关闭网页

.quit

End With

End Sub

代码解释:(见注释)

贴士:

1)VBA只能操作IE浏览器,原因就一句话:都是微软家的产品嘛

2)要先引用Micorsoft Internet Controls

Excel vba如何抓取指定的网页数据到单元格

参考:

Sub A1下载数据()

ReDim A2(1 To 200000, 1 To 15): A = 0

For i = 1 To 5

Sleep 2000 + 1000 * Rnd

With CreateObject("WinHttp.WinHttpRequest.5.1")

URL = "目标网页"

.Open "get", URL, False

.setRequestHeader "Host", "xxxxx"

.Send

Q1 = .responseText

Q1 = Replace(Q1, """", "")

Q1 = Replace(Q1, Chr(9), "")

Q1 = Replace(Q1, Chr(10), "")

Q1 = Replace(Q1, Chr(13), "")

Q1 = Replace(Q1, "=odd", "=")

End With

'Sheet1.[A2] = Q1

B1 = Split(Q1, "/trtr class=td")

For j = 1 To UBound(B1)

B2 = Split(B1(j), "/td")

B3 = Split(Replace(B2(1), "td", ""), ",")

A2(A + 1, 1) = Replace(B2(2), "td", "")

A2(A + 1, 2) = Replace(B2(0), "td", "")

For K = 0 To 9

A2(A + 1, 3 + K) = B3(K)

Next

A = A + 1

Next

Application.StatusBar = i

Next

MsgBox A

With Sheet1

If .AutoFilterMode = True Then .AutoFilterMode = False

.Rows("2:600000").ClearContents

If A 0 Then .[A2].Resize(A, 15) = A2

.Rows(1).AutoFilter '数据筛选

ActiveWindow.ScrollRow = 1

ActiveWindow.ScrollColumn = 1

End With

End Sub

怎么用VBA或网络爬虫程序抓取网站数据

VBA网抓常用方法

1、xmlhttp/winhttp法:

用xmlhttp/winhttp模拟向服务器发送请求,接收服务器返回的数据。

优点:效率高,基本无兼容性问题。

缺点:需要借助如fiddler的工具来模拟http请求。

2、IE/webbrowser法:

创建IE控件或webbrowser控件,结合htmlfile对象的方法和属性,模拟浏览器操作,获取浏览器页面的数据。

优点:这个方法可以模拟大部分的浏览器操作。所见即所得,浏览器能看到的数据就能用代码获取。

缺点:各种弹窗相当烦人,兼容性也确实是个很伤脑筋的问题。上传文件在IE里根本无法实现。

3、QueryTables法:

因为它是excel自带,所以勉强也算是一种方法。其实此法和xmlhttp类似,也是GET或POST方式发送请求,然后得到服务器的response返回到单元格内。

优点:excel自带,可以通过录制宏得到代码,处理table很方便

。代码简短,适合快速获取一些存在于源代码的table里的数据。

缺点:无法模拟referer等发包头

也可以利用采集工具进行采集网页端的数据,无需写代码。

excel如何用宏自动抓取数据?

自动生成数据步骤:

首先,需要在excel中添加加载项--数据分析库,然后就可以进行数据自动生成了,以专业的术语叫做“随机数发生器”。依次点击:excel选项-加载项-用VBA也可以根据数据源批量填充模板生成新表一个简单情况的示例:示例里的代码:Sub根据数据源批量填充。

这个宏的作用是:把当前文件夹下每一个excel文件的每一行(共8行)复制到总表的每一个sheet工作表中去,即把一个文件里的那1张表的8行复制转换成另一个文件的8张表里的8行,主要用于汇总工作。

如何将excel表里的数据提取到word文档里的解决方法如下:

1、复制法。

即将原来的数据直接复制后,在word中进行粘贴,这样数据就直接导入到word文档中了。

2、邮件合并法。

在word中启用邮件合并,按向导的过程分别制作好需要插入的需要,数据源,对应关系,最后执行合并就可以了。

3、程序法。

在word中插入合并域(如果是有规律的表格,可以不用这一步),然后编写vba程序,从excel文件中读取数据,然后写入到word中指定的位置。

上面三个方法中,方法1简单快捷,但是每次都需要操作,如果数据不是连续的块,需要复制粘贴多次,相对来说麻烦一点。

方法2,一次设置可以多次使用,但不够灵活。

方法3方便可以多次重复使用,但需要有一定的编程基础,可以根据工作的实际选择一个最适合的完成这个工作。

怎么用vba抓取excel表格中的数据

你的问题太大了,因为VBA在excel就是抓数据、计算数据的,要看你具体怎么抓。比如抓取特定字段数据,应该用到三个字符串函数:LEFT、RIGHT、MID

1、LEFT函数:

用法:LEFT(要提取字符所在单元格,从左侧开始提取的个数)

例如:=LEFT(A1,2) 意思是从A1单元格提取前两个字符。

2、RIGHT函数:

用法:RIGHT(要提取字符所在单元格,从右侧开始提取的个数)

例如:=RIGHT(A1,2) 意思是从A1单元格提取最后两个字符。

3、MID函数:

用法:MID(要提取字符所在单元格,开始位置,提取个数)

例如:=MID(A1,2,2) 意思是从A1单元格提的第二个单元格开始,提取两个字符,也就提取A1单元格第2个和第3个字符。

注:用MID函数,也可以替代前两个函数,比如:=MID(A1,1,2)与=LEFT(A1,2)的结果是一样的,再比如:=MID(A1,LEN(A1)-2+1,2)与=RIGHT(A1,2)的结果是一样的只是这里用到LEN函数,其作用是取得单元格字符串的长度。

4、提取后的字符合并:

字符合并要用到连接符号:

比如:=LEFT(A1,2)RIGHT(A1,2) 意思是把A1单元格的前两个和最后两个字符,提取出来组成一个新的字符。