我使用Web Queries从网页到Excel获取了许多表格。 网页中的表格如下所示
在Excel中,我需要它们是这样的:
A1 B1 C1 D1 E1 F1 G1 ......
A2 B2 C2 D2 E2 F2 G2 ...
我通过多次运行此代码来获取所有这些表,只需将webtables从1,18,35,52,69更改为2,19,36,53,70 ... 3,20, 37,54,71 ......直到17,34,51,68,85 ......以及从A1到AE1,BI1 ......的数据放置范围:
With ActiveSheet.QueryTables.Add(Connection:="URL;http://domain.com", Destination:=Range("$A$1"))
.Name = "table-01"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = _
"1,18,35,52,69,86,103,120,137,154,171,188,205,222,239,256,273,290,307,324,341,358,375,392,409,426,443,460,477,494,511,528,545,562,579,596,613,630,647,664,681,698,715,732,749,766,783,800,817,834"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = True
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
以上代码运行17次以获取所有数据并将其从所有垂直移动到水平到Excel。 但它需要很长时间,我注意到每个webquery我打开一个新连接,将数据导入Excel,关闭,移动到下一个,打开连接,将数据导入Excel,关闭......等等17倍。但是由于负载很高,网络服务器有时会回复错误和空白页面,所以我会在我的Excel空白部分中输入:
A1 B1 C1 xx E1 F1 G1 ...
A2 B2 C2 xx E2 F1 G2 ...
我想知道是否可以做任何这些选项,无论哪个更容易和/或更好:
编辑: Graphical idea of how the tables should be arranged in one call
答案 0 :(得分:0)
您是否尝试过添加转置功能?
With ActiveSheet.QueryTables.Add(Connection:="URL;http://domain.com", Destination:=Range("$A$1"))
'...
.Transpose = True
End With
编辑:
我正在考虑使用转置和更改
Destination:=Range("$A$1")
到
Destination:=Range(StartingCell)'where StartigCell is valued to set the first empty row
所以要将所有数据都放在列而不是行