У меня есть много таблиц с веб-страницы в Excel с помощью веб-запросов. Таблицы в веб-страницы перечислены как этотПолучить несколько таблиц в одном веб-запросе Excel
- A1
- A2
- A3
- A4
- A5
- A6
- A7
- A8
- A9
- А10
- А11
- А12
- А13
- А14
- А15
- А16
- А17
- В1
- В2
- В3
- B4
- В5
- В6
- В7
- В8
- В9
- В10
- В11
- В12
- В13
- В14
- В15
- В16
- В17
- ...
В Excel мне нужно, чтобы они были как это:
А1 В1 С1 D1 Е1 F1, G1, ...
А2 В2 C2 D2 E2 F2 G2 ...
Я получаю все эти таблицы, выполняя несколько раз этот код, просто меняя веб-таблицы с 1,18,35,52,69 ... до 2,19,36,5 3,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. Но это занимает много времени, и я замечаю, что для каждого веб-сайта я открываю новое соединение, получаю данные в Excel, закрываю, перехожу к следующему, открываю соединение, получаю данные в Excel, закрываю ... и так далее 17 раз.Но с высокой нагрузкой, веб-сервер отвечает иногда с ошибкой и пустой страницей, так что я получаю в моем Excel пустых части, как:
A1 B1 C1 ой E1 F1 G1 ...
A2 B2 C2 хх E2 F1 G2 ...
мне интересно, если это возможно, чтобы сделать какие-либо из этих вариантов, в зависимости от того проще и/или лучше:
- из Excel, откройте одно соединение и получить все данные в циклах затем закрыть или
- Excel обнаружение s, что веб-запрос не возвращает никаких данных, поэтому веб-запроса является пустым, и поэтому он автоматически повторяет, что веб-запрос до тех пор, пока он получает данные, а затем перейти к следующему запросу
EDIT:Graphical idea of how the tables should be arranged in one call
ВАРИАНТ 1 возможно в различных методах первый экзамен на степень бакалавра Используя объект HTTPXML, его обычно называют «скремблированием». – Jeeped
Вот один. [Ссылка] (http://stackoverflow.com/questions/29723571/post-website-form-data-and-retrieve-results/29724280#29724280). Нажмите на теги [xmlhttp-vba] или [html-parsing] для получения дополнительных примеров. – Jeeped
С HTPXML я получу все данные, но я должен взять table1, table17 ... и поместить их прямо друг под друга, а затем table2, table18 поставить справа и так далее со всеми другими таблицами, я не знаю правильно как их перемещать, потому что у меня нет ссылки, как узнать, когда заканчивается одна таблица и начинается следующий ... – gxe