2014-10-11 3 views
0

Мне нужно скопировать на еженедельных основаниях 500-600 ячеек на веб-сайт, который покрыт текстовыми полями. Я знаю, как закодировать, поэтому я знаю, как читать исходный код, но Excel сейчас вне меня. Как я могу скопировать ячейку Excel для размещения в определенном текстовом поле (я разбил ее ниже). Теперь мне понадобится помощь, чтобы повторить его, пока он не ударит по пустой ячейке.Excel Noob Скопировать ячейку Excel в текстовое поле HTML

A1 = id='firstname0' 
A2 = id='middleinitial0' 
A3 = id='lastname0' 
A6 = id='ntlogin0' 

B1 = id='firstname1' 
B2 = id='middleinitial1' 
B3 = id='lastname1' 
B6 = id='ntlogin1' 

C1 = id='firstname2' 
C2 = id='middleinitial2' 
C3 = id='lastname2' 
C6 = id='ntlogin2' 

Вот некоторые из источника сайта:

<td> 
    <input type='text' name='ntlogin[]' id='ntlogin0' /> 
</td> 

<td> 
    <input type='text' name='firstname[]' id='firstname0' /> 
</td> 

<td class='center'> 
    <input type='text' name='middleinitial[]' id='middleinitial0' size='1' /> 
</td> 

<td> 
    <input type='text' name='lastname[]' id='lastname0' /> 
</td> 

<td> 
    <input type='text' name='hiredate[]' id='hiredate0' /> 
</td> 

Сайт спрашивает меня, сколько строк, чтобы создать. Раздел дат проката, который я могу контролировать, нажатием 1 кнопки. Я не могу контролировать сайт, поэтому я не могу вносить в него никаких изменений.

ответ

1

Вы можете использовать библиотеку VBA «Controls Интернет Microsoft» и «Библиотека объектов Microsoft HTML» и полностью автоматизировать взаимодействие страницы веб ...

Ниже приведен макрос, чтобы сделать это ... Для того, чтобы ввести код макроса , вы можете использовать Alt + F11 для входа в среду Microsoft Visual Basic для приложений.
- Добавить библиотеку литературы (в меню Tools>References)
- добавить модуль кода (под Insert>Module)
- Вставьте код ниже ... изменить их URL-адрес

Код будет открыть IE затем перейдите на веб-страницу и дождитесь, пока вы нажмете OK (после того, как вы сделаете все, что вам нужно. Возможно, войдите в систему, перемещаясь где-нибудь, введя количество строк, ...). Затем он будет проходить через все столбцы, которые вы использовали в своей электронной таблице (используя Find для заполнения numCols) и отбросить значения ячеек в элементы HTML с соответствующими идентификаторами. Это не ударит Добавить сотрудников для вас, на всякий случай что-то пошло не так, но библиотека дает вам возможность .Click() о вещах.

Я использовал это для нескольких взломов автоматизации, и он кажется вполне надежным ... Трудные части могут ждать загрузки/обновления страниц - но у вас не должно быть этой проблемы.

'References needed: "Microsoft Internet Controls" and "Microsoft HTML Object Library" 
' (add under menu Tools > References) 

Sub populate() 

    Dim ws As Worksheet 
    Set ws = Application.ActiveSheet 

    Dim appIE As InternetExplorer 
    Set appIE = New InternetExplorer 
    appIE.Visible = True 

    appIE.Navigate "http://localhost:8080/your_form" 

    If vbCancel = MsgBox("Make sure the page has loaded, enter the number of ids etc. etc. Then click OK", vbOKCancel) Then 
    Set appIE = Nothing 
    Exit Sub 
    End If 

    Dim counter As Integer, index As Integer, numCols As Integer 
    numCols = ws.Cells.Find(What:="*", After:=[A1], LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Column 
    For counter = 1 To numCols 
    'A1 = id='firstname0' 
    'A2 = id='middleinitial0' 
    'A3 = id='lastname0' 
    'A6 = id='ntlogin0' 
    index = counter - 1 
    appIE.document.getElementById("firstname" & index).Value = ws.Cells(1, counter) 
    appIE.document.getElementById("middleinitial" & index).Value = ws.Cells(2, counter) 
    appIE.document.getElementById("lastname" & index).Value = ws.Cells(3, counter) 
    appIE.document.getElementById("ntlogin" & index).Value = ws.Cells(6, counter) 
    Next counter 

    Set appIE = Nothing 
    Set ws = Nothing 

    MsgBox "All done - hit Submit if all OK!" 

End Sub 

ВЕРСИЯ ДЛЯ ЗНАЧЕНИЯ В РЯДОВ

'References needed: "Microsoft Internet Controls" and "Microsoft HTML Object Library" 
' (add under menu Tools > References) 

Sub populate() 

    Dim ws As Worksheet 
    Set ws = Application.ActiveSheet 

    Dim appIE As InternetExplorer 
    Set appIE = New InternetExplorer 
    appIE.Visible = True 

    appIE.Navigate "http://localhost:8080/your_form" 

    If vbCancel = MsgBox("Make sure the page has loaded, enter the number of ids etc. etc. Then click OK", vbOKCancel) Then 
    Set appIE = Nothing 
    Exit Sub 
    End If 

    Dim counter As Integer, index As Integer, numRows As Integer 
    numRows = ws.Cells.Find(What:="*", After:=[A1], LookIn:=xlValues, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
    For counter = 1 To numRows 
    'A1 = id='firstname0' 
    'B1 = id='middleinitial0' 
    'C1 = id='lastname0' 
    'D1 = id='ntlogin0' 
    index = counter - 1 
    appIE.document.getElementById("firstname" & index).Value = ws.Cells(counter,1) 
    appIE.document.getElementById("middleinitial" & index).Value = ws.Cells(counter,2) 
    appIE.document.getElementById("lastname" & index).Value = ws.Cells(counter,3) 
    appIE.document.getElementById("ntlogin" & index).Value = ws.Cells(counter,4) 
    Next counter 

    Set appIE = Nothing 
    Set ws = Nothing 

    MsgBox "All done - hit Submit if all OK!" 

End Sub 
+0

Это отправная точка, но я понятия не имею, что вы сказали: O я стараюсь смотреть на него, но я никогда не играл с первенствует – user237025

+0

@ user237025 - ахха! Это будет хорошее введение для новичков :-) Является ли сайт общедоступным, и вы можете поделиться своими примерами данными ... Я могу дать вам более полный пример! – Captain

+0

Нет, это внутренний веб-сайт, но я могу дать вам больше примера http://pastebin.com/AaWCZUJe – user237025

Смежные вопросы