VBA将html表格数据复制到excel工作表
我需要一个VBA脚本,可以提取本地html表数据到Excel工作表。我有一些代码(在web上的某个地方找到的)可以通过使用URL链接来工作,但我想要的是能够使用本地存储的html文件来完成。错误是我得到的是“应用程序定义或对象定义错误”VBA将html表格数据复制到excel工作表,excel,vba,Excel,Vba,我需要一个VBA脚本,可以提取本地html表数据到Excel工作表。我有一些代码(在web上的某个地方找到的)可以通过使用URL链接来工作,但我想要的是能够使用本地存储的html文件来完成。错误是我得到的是“应用程序定义或对象定义错误” 将HTML_表_分为_Excel() 作为对象的Dim htm 作为对象的Dim Tr 将Td作为对象 将选项卡1设置为对象 '替换要下载的网页的URL Web_URL=”http://espn.go.com/nba/" '创建HTMLFile对象 设置HTM
将HTML_表_分为_Excel()
作为对象的Dim htm
作为对象的Dim Tr
将Td作为对象
将选项卡1设置为对象
'替换要下载的网页的URL
Web_URL=”http://espn.go.com/nba/"
'创建HTMLFile对象
设置HTML\u Content=CreateObject(“htmlfile”)
'将网页内容获取到HTMLFile对象
使用CreateObject(“msxml2.xmlhttp”)
.打开“获取”,网址,假
.发送
HTML_Content.body.innerHTML=.responseText'这是错误的突出显示部分
以
列\u Num \u To \u Start=1
iRow=2
iCol=列的开始数量
iTable=0
'循环浏览每个表,并以适当的格式将其下载到Excel
对于HTML_Content.getElementsByTagName(“表”)中的每个选项卡1
使用HTML_Content.getElementsByTagName(“表”)(iTable)
对于每行中的每个Tr
对于Tr单元格中的每个Td
工作表(1).单元格(iRow,iCol).选择
表(1).单元格(iRow,iCol)=Td.innerText
iCol=iCol+1
下一个Td
iCol=列的开始数量
iRow=iRow+1
下一个Tr
以
iTable=iTable+1
iCol=列的开始数量
iRow=iRow+1
下表1
MsgBox“流程已完成”
端接头
我不确定是否遵循了约定,但我设法成功地将HTML表导出到excel。这是我的vb脚本。欢迎进行任何优化/更正!谢谢
Sub Export()
rowsLength =document.all.yourHTMLTableId.rows.length
cellLength= (document.all.yourHTMLTableId.Cells.length/rowsLength) 'Because i dont know how to get no.of cells in a row,so used a simple division
Set crr = CreateObject("WScript.Shell")
fileNm= "Export"
dir= crr.CurrentDirectory&"\"&fileNm&".xlsx"
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet= objWorkbook.Worksheets(1)
i=0
j=0
do until i=rowsLength
do until j=cellLength
objWorksheet.cells(i+1,j+1).value = document.all.yourHTMLTableId.rows(i).cells(j).innerHTML
msgbox document.all.yourHTMLTableId.rows(i).cells(j).innerHTML
j= j+1
Loop
j=0
i=i+1
Loop
objWorkbook.SaveAs(dir)
objWorkbook.close
objExcel.Quit
Set objExcel = Nothing
End Sub我遇到了同样的问题,为了解决这个问题,我使用了问题的原始代码,但是我没有下载html,而是将html作为文本文件打开,结果被传递到对象html_Content.body.innerHtml。其余代码是相同的
Sub HTML_Table_To_Excel()
Dim htm As Object
Dim Tr As Object
Dim Td As Object
Dim Tab1 As Object
Dim file as String
'Replace the file path with your own
file = "c:\your_File.html"
'Determine the next file number available for use by the FileOpen function
TextFile = FreeFile
'Open the text file
Open file For Input As TextFile
'Create HTMLFile Object
Set HTML_Content = CreateObject("htmlfile")
HTML_Content.body.innerHtml = Input(LOF(TextFile), TextFile)
Column_Num_To_Start = 1
iRow = 2
iCol = Column_Num_To_Start
iTable = 0
'Loop Through Each Table and Download it to Excel in Proper Format
For Each Tab1 In HTML_Content.getElementsByTagName("table")
With HTML_Content.getElementsByTagName("table")(iTable)
For Each Tr In .Rows
For Each Td In Tr.Cells
Sheets(1).Cells(iRow, iCol).Select
Sheets(1).Cells(iRow, iCol) = Td.innerText
iCol = iCol + 1
Next Td
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tr
End With
iTable = iTable + 1
iCol = Column_Num_To_Start
iRow = iRow + 1
Next Tab1
MsgBox "Process Completed"
End Sub
您是否尝试了
网站URL的文件://
?例如,如果您的文件存储在~/User/abc.html中,您可以尝试:WEB\u URL=”file:///Users/abc.html“
是。我尝试了WEB\u URL=“file://C:/users/folder/test.html”
。它不起作用。出现相同错误。请尝试以下操作:若要使用正确的URL创建XHR,请将前缀文件://
和文件的编码路径连接起来(使用EncodeUriComponent()
函数like)。