Указанный вами URL не будет работать. Вам нужен идентификатор NCT, чтобы попасть на нужную страницу, а не название препарата. Предположим, у вас есть два препарата, перечисленных в A1: B2, и правильный идентификатор NCT указан в столбце B
celebrex NCT00571701
naproxen NCT00586365
Чтобы использовать этот код, установите ссылку на библиотеку Microsoft XML 5.0 и библиотеку Microsoft Forms 2.0.
Sub GetClinical()
Dim i As Long
Dim lLast As Long
Dim oHttp As MSXML2.XMLHTTP50
Dim sHtml As String
Dim lDataStart As Long, lTblStart As Long, lTblEnd As Long
Dim doClip As DataObject
'Find the last cell in column A
lLast = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
Set oHttp = New MSXML2.XMLHTTP50
'Loop from the last cell to row 1 in column A
For i = lLast To 1 Step -1
'Insert 5 rows below
Sheet1.Cells(i, 1).Offset(1, 0).Resize(5).EntireRow.Insert
'get the web page
oHttp.Open "GET", "http://clinicaltrials.gov/ct2/show/" & Sheet1.Cells(i, 2).Value & "?rank=1"
oHttp.send
sHtml = oHttp.responseText
'Find the start and end to the table
lDataStart = InStr(1, sHtml, "Estimated Enrollment:")
lTblStart = InStr(lDataStart - 200, sHtml, "<table")
lTblEnd = InStr(lDataStart, sHtml, "</table>") + 8
'put the table in the clipboard
Set doClip = New DataObject
doClip.SetText Mid$(sHtml, lTblStart, lTblEnd - lTblStart)
doClip.PutInClipboard
'paste the table as text
Sheet1.Cells(i, 1).Offset(1, 0).Select
Sheet1.PasteSpecial "Text", , , , , , True
Next i
End Sub
Если у вас нет номеров NCT, я не думаю, что вы сможете создать работоспособный URL. Также обратите внимание, что я нахожу таблицу, ища определенную строку (Предполагаемая регистрация: - обратите внимание на два пробела между ними) и резервное копирование 200 символов. 200 произвольно, но работал как для знаменитостей, так и для напроксенов. Я не могу гарантировать, что их форматирование будет последовательным. Они не используют идентификаторы таблиц, поэтому сложно найти правильный.
Всегда делайте резервную копию ваших данных перед запуском кода, который их изменяет.