Excel naar webformulier


In dit artikel wordt gedemonstreerd hoe gegevens vanuit Excel geautomatiseerd naar een webformulier geupload en verzonden kunnen worden. Dit proces geschiedt met behulp van de programmeertaal VBA. Het grote voordeel van deze automatiseringsslag is tijdwinst en het uitsluiten van invoerfouten.

Ten behoeve van dit artikel is deze website met een webformulier gemaakt. De toepassing in Excel kan hier gedownload worden om te testen.

De website met het webformulier is als volgt opgebouwd.

<HTML>
<HEAD>
	<TITLE> Testpagina </TITLE>
	<SCRIPT language="javascript">
		
		function voegtoeRij(TabelID) {

			var table = document.getElementById(TabelID);

			var rowCount = table.rows.length;
			var row = table.insertRow(rowCount);

			var cell1 = row.insertCell(0);
			cell1.innerHTML = document.getElementById("Voornaam").value;

			var cell2 = row.insertCell(1);
			cell2.innerHTML = document.getElementById("Achternaam").value;

			var cell3 = row.insertCell(2);
			cell3.innerHTML = document.getElementById("Telefoon").value;
			
			var cell4 = row.insertCell(3);
			cell4.innerHTML = document.getElementById("Email").value;

		}

	</SCRIPT>
</HEAD>
<BODY>

<form>
	<label for="Voornaam">Voornaam</label>
    <input type="text" id="Voornaam" value=""></input>
    <label for="Voornaam">Achternaam</label>
    <input type="text" id="Achternaam" value=""></input>
    <label for="Voornaam">Telefoon</label>
	<input type="text" id="Telefoon" value=""></input>
	<label for="Voornaam">Email</label>
    <input type="text" id="Email" value=""></input>
    <input type="button" value="Verzenden" id="Verzenden" onclick="voegtoeRij('Tabel')" />
</form>

<table border="1" id="Tabel">
	<tr>
		<th align="left">Voornaam</th>
		<th align="left">Achternaam</th>
		<th align="left">Telefoon</th>
		<th align="left">Email</th>
	</tr>
</table>

</BODY>
</HTML>

Het belangrijkst is het webformulier. De velden hebben respectievelijk de volgende id's: Voornaam, Achternaam, Telefoon en Email. De button heeft als id Verzenden.

Merk op dat deze id's ook terugkomen in de onderstaande VBA procedure.

'-----------------------------------------------------------------------------------------------------------------------
' Auteur        : pascalterheege.nl
' Datum         : 3-8-2018
' Object        : modUpload
' Doel          : excel gegevens uploaden naar webformulier
' Bronnen       : https://www.automateexcel.com/vba/automate-internet-explorer-ie-using/
'               : https://www.wiseowl.co.uk/blog/s393/scrape-website-html.htm
'-----------------------------------------------------------------------------------------------------------------------

Option Explicit

Public Const URL = "https://pascalterheege.nl/wp-content/uploads/office/blog/xls/uploaden/index.php"
Sub Uploaden()

'   Internet explorer
    Dim IE As Object
    Dim item

    Set IE = CreateObject("InternetExplorer.Application")
 
    With IE
        .Visible = True
        .Navigate URL
    End With

    Wachten IE
    
'   Excel
    Dim Bereik As Range
    Dim r As Integer
    
    Set Bereik = ActiveSheet.UsedRange
   
    For r = 2 To Bereik.Rows.Count
    
'       Uploaden
        With IE.document
            .getElementById("Voornaam").Value = Bereik.Cells(r, 1).Value
            .getElementById("Achternaam").Value = Bereik.Cells(r, 2).Value
            .getElementById("Telefoon").Value = Bereik.Cells(r, 3).Value
            .getElementById("Email").Value = Bereik.Cells(r, 4).Value
            .getElementById("Verzenden").Click
        End With
        
        Wachten IE

    Next r

End Sub

Sub Wachten(IE As Object)

    Do While IE.ReadyState <> 4 Or IE.Busy: DoEvents: Loop

End Sub

De bovenstaande procedure leest dus alle waarden in Excel uit en plaatst deze telkens in de invoervelden. Tot slot wordt er automatisch op de knop [Verzenden] gedrukt.