Biblioteki programowania VIES

Biblioteki programistyczne umożliwiają wyszukiwanie danych przedsiębiorców na podstawie wprowadzonego numeru VAT UE. Obecnie dostępne są biblioteki API dla następujących języków programowania:

  • .NET (C#, Visual Basic)
  • Jawa
  • JavaScript (Node.js)
  • PHP
  • Pyton
  • C/C++

API zapewnia następujące funkcje:

  • getVIESData – funkcja potwierdzenia aktywności numeru VAT UE nadanego przez którekolwiek z państw członkowskich Unii Europejskiej,
  • getVIESDataParsedfunkcja potwierdzająca aktywność numeru VAT UE nadanego przez którekolwiek z Państw Członkowskich Unii Europejskiej i zwracająca przeanalizowany adres przedsiębiorcy,
  • getVIESDataAsync – funkcja asynchroniczna, która na podstawie przesłanej partii numerów VAT pozwala na uzyskanie aktualnego statusu VAT UE oraz danych przedsiębiorcy.
  • getVIESDataAsyncResult – funkcja umożliwia pobranie wyników wsadowych na podstawie tokena zwróconego przez funkcję getVIESDataAsync
  • getAccountStatus – funkcja umożliwiająca pobranie aktualnych informacji o koncie użytkownika.

Integracja

Wszystkie biblioteki z kodami źródłowymi są dostępne do pobrania na Ściągnij strona. Ponadto kod źródłowy bibliotek jest również dostępny w naszym oficjalnym repozytorium na Github.

Sposób integracji biblioteki zależy od wybranego języka programowania. W przypadku języków, które obsługują zarządzanie biblioteką w oparciu o centralne repozytorium, istnieje możliwość jego wykorzystania.

// NuGet Gallery
// https://www.nuget.org/packages/VIESAPI.VIESAPIClient

PM> Install-Package VIESAPI.VIESAPIClient
// No central repository support
// Maven
// https://viesapi.eu/maven/

<repository>
    <id>viesapi</id>
    <url>https://viesapi.eu/maven/releases</url>
</repository>

<dependency>
    <groupId>eu.viesapi</groupId>
    <artifactId>viesapi-client</artifactId>
    <version>1.2.6</version>
</dependency>
// NPM
// https://www.npmjs.com/package/viesapi-client

npm install viesapi-client
// Packagist (Composer)
// https://packagist.org/packages/viesapi/client

composer require viesapi/client
# No central repository support

pip install viesapi-python-client-1.2.6.zip
' No central repository support

Uwierzytelnianie

W celu przeprowadzenia poprawnego uwierzytelnienia, poprawne wartości id oraz key parametry należy podać podczas budowy obiektu klienta. The id parametr powinien zawierać poprawny identyfikator klucza używany do autoryzacji. The key parametr powinien zawierać prawidłową wartość klucza używanego do autoryzacji. Identyfikator klucza oraz klucz są generowane przez użytkownika po zalogowaniu się na jego konto w serwisie viesapi.eu portal. Proces generowania kluczy i identyfikatorów został szczegółowo opisany powyżej.

Poniższy przykład ilustruje sposób korzystania z funkcji bibliotecznych:

using viesapiLibrary.dll;

// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
VIESAPIClient viesapi = new VIESAPIClient("id", "key");
#include "viesapi.h"

// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
VIESAPIClient* viesapi = NULL;
viesapi_new_prod(&viesapi, "id", "key");
import pl.viesapi.client.*;

// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
VIESAPIClient viesapi = new VIESAPIClient("id", "key");
var VIESAPI = require('viesapiclient');

// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
var viesapi = new VIESAPI.VIESAPIClient('id', 'key');
require_once 'VIESAPI/VIESAPIClient.php';

\VIESAPI\VIESAPIClient::registerAutoloader();

// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
$viesapi = new \VIESAPI\VIESAPIClient('id', 'key');
from viesapi import *
from pprint import pprint

// Create the service client object
// id - a string representing the API key identifier
// key - a string representing the API key
viesapi = VIESAPIClient('id', 'key')
' Create the service client object
' id - a string representing the API key identifier
' key - a string representing the API key
Dim viesapi As New VIESAPIClient
viesapi.URL = "https://www.viesapi.eu/api"
viesapi.Id = "id"
viesapi.Key = "key"

Uwaga! W procesie uwierzytelniania wykorzystywany jest aktualny czas komputera klienta. Dlatego w przypadku problemów z uwierzytelnianiem przy próbie połączenia z systemem viesapi.eu należy najpierw upewnić się, że komputer lub serwer, z którego nawiązywane jest połączenie, ma poprawną aktualną godzinę i strefę czasową. Więcej informacji na temat metody wykorzystywanej przez system viesapi.eu do uwierzytelniania zapytań można znaleźć tutaj.

Sprawdzanie numerów VAT UE

Numer VAT UE potwierdzamy dzwoniąc pod numer getVIESData funkcja, której parametrem jest numer VAT UE, który chcemy zweryfikować. Funkcja umożliwia weryfikację numerów VAT UE wydanych przez wszystkie państwa członkowskie Unii Europejskiej.

Poniższy przykład ilustruje wykorzystanie funkcji w bibliotekach:

// A call to a method that returns data from a VIES system
VIESData vies = viesapi.GetVIESData("PL1234567890");

if (vies != null) {
	Console.WriteLine(vies);
}
else {
	Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
}
// A call to a method that returns data from a VIES system
VIESData* vies = viesapi_get_vies_data(viesapi, "PL1234567890");

if (vies != NULL) {
	printf("Kraj: %s\n", vies->CountryCode);
	printf("VAT ID: %s\n", vies->VATNumber);
	printf("Aktywny: %d\n", vies->Valid);
}
else {
	printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
}
// A call to a method that returns data from a VIES system
VIESData vies = viesapi.getVIESData("PL1234567890");

if (vies != null) {
	System.out.println(vies);
}
else {
	System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
}
// A call to a method that returns data from a VIES system
viesapi.getVIESData('PL1234567890').then((vies) => {
	console.log(vies.toString());
}).catch((e) => {
	console.log(e.message);
});
// A call to a method that returns data from a VIES system
$vies = $viesapi->get_vies_data('PL1234567890');

if ($vies) {
	print_r($vies);
}
else {
	echo '<p>Error: ' . $viesapi->get_last_error() . '</p>';
}
# A call to a method that returns data from a VIES system
vies = viesapi.get_vies_data('PL1234567890')

if vies:
    pprint(vars(vies))
else:
    print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' A call to a method that returns data from a VIES system
Dim vies As VIESData
Set vies = viesapi.GetVIESData("PL1234567890")

If vies Is Nothing Then
	Console.WriteLine("Error: {0}", viesapi.LastError)
Else
	Console.WriteLine(vies.ToString())
End If

Szczegółowy opis zwracanych atrybutów:

  • uid – unikalny identyfikator zapytania generowany przez viesapi.eu,
  • countryCode – kod kraju, w którym zarejestrowana jest firma powiązana z podanym w zapytaniu numerem VAT UE,
  • vatNumber – podany w zapytaniu numer VAT UE weryfikowanej firmy,
  • valid – odpowiedź z serwisu VIES, informująca o aktualnym statusie VAT UE sprawdzanego podmiotu:
    • true – podany w zapytaniu numer VAT UE jest aktualny,
    • false – podany w zapytaniu numer VAT UE jest nieprawidłowy,
  • traderName – nazwa handlowa firmy,
  • traderCompanyType – zawsze zwracał ciąg znaków '-',
  • traderAddress – adres firmy, pod którą firma jest zarejestrowana,
  • id – unikalny identyfikator zapytania wygenerowany przez system VIES (Numer Konsultacyjny)
  • date – data wykonania zapytania
  • source – źródło danych, zawsze: http://ec.europa.eu

Sprawdzanie numerów VAT UE z przeanalizowanym adresem przedsiębiorcy

Numer VAT UE można również potwierdzić dzwoniąc pod numer getVIESDataParsed funkcja, której parametrem jest numer VAT UE, który chcemy zweryfikować. Wywołując tę funkcję, oprócz informacji o statusie podatnika VAT, otrzymujesz również sparsowany adres przedsiębiorcy.

Notatka! Ze względu na brak danych zwróconych przez VIES dla handlowców z Niemiec i Hiszpanii, funkcja nie nie wracać przeanalizowany adres handlowy (traderAddressComponent) dla tych krajów.

Ważne zastrzeżenie

Funkcja analizy składniowej korzysta z zewnętrznych algorytmów sztucznej inteligencji i interfejsów API w celu automatycznego wyodrębniania atrybutów, takich jak: miasto, kod pocztowy, ulica z numerem domu (numer budynku) i numer domu, dlatego nie możemy zagwarantować prawidłowego działania funkcji 100%.

Poniższy przykład ilustruje wykorzystanie funkcji w bibliotekach:

// A call to a method that returns data from a VIES system
VIESData vies = viesapi.GetVIESDataParsed("PL1234567890");

if (vies != null) {
	Console.WriteLine(vies);
}
else {
	Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
}
// A call to a method that returns data from a VIES system
VIESData* vies = viesapi_get_vies_data_parsed(viesapi, "PL1234567890");

if (vies != NULL) {
	printf("Kraj: %s\n", vies->CountryCode);
	printf("VAT ID: %s\n", vies->VATNumber);
	printf("Aktywny: %d\n", vies->Valid);
}
else {
	printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
}
// A call to a method that returns data from a VIES system
VIESData vies = viesapi.getVIESDataParsed("PL1234567890");

if (vies != null) {
	System.out.println(vies);
}
else {
	System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
}
// A call to a method that returns data from a VIES system
viesapi.getVIESDataParsed('PL1234567890').then((vies) => {
	console.log(vies.toString());
}).catch((e) => {
	console.log(e.message);
});
// A call to a method that returns data from a VIES system
$vies = $viesapi->get_vies_data_parsed('PL1234567890');

if ($vies) {
	print_r($vies);
}
else {
	echo '<p>Error: ' . $viesapi->get_last_error() . '</p>';
}
# A call to a method that returns data from a VIES system
vies = viesapi.get_vies_data_parsed('PL1234567890')

if vies:
    pprint(vars(vies))
else:
    print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' A call to a method that returns data from a VIES system
Dim vies As VIESData
Set vies = viesapi.GetVIESDataParsed("PL1234567890")

If vies Is Nothing Then
	Console.WriteLine("Error: {0}", viesapi.LastError)
Else
	Console.WriteLine(vies.ToString())
End If

Szczegółowy opis zwracanych atrybutów:

  • uid – unikalny identyfikator zapytania generowany przez viesapi.eu,
  • countryCode – kod kraju, w którym zarejestrowana jest firma powiązana z podanym w zapytaniu numerem VAT UE,
  • vatNumber – podany w zapytaniu numer VAT UE weryfikowanej firmy,
  • valid – odpowiedź z serwisu VIES, informująca o aktualnym statusie VAT UE sprawdzanego podmiotu:
    • true – podany w zapytaniu numer VAT UE jest aktualny,
    • false – podany w zapytaniu numer VAT UE jest nieprawidłowy,
  • traderName – nazwa handlowa firmy,
  • traderCompanyType – zawsze zwracał ciąg znaków '-',
  • traderAddress – adres firmy, pod którym jest zarejestrowana firma (format oryginalny)
  • traderAddressComponentszczegóły adresu grupowania komponentów
    • country – nazwa kraju przedsiębiorcy w jego języku ojczystym
    • postalCode – kod pocztowy adresu przedsiębiorcy
    • city – miasto adresu przedsiębiorcy
    • street - ulica, pod którą znajduje się adres sprzedawcy
    • streetNumber – numer ulicy, pod którą mieści się siedziba przedsiębiorcy
    • houseNumber – numer domu, pod którym mieści się siedziba przedsiębiorcy
  • id – unikalny identyfikator zapytania wygenerowany przez system VIES (Numer Konsultacyjny)
  • date – data wykonania zapytania
  • source – źródło danych, zawsze: http://ec.europa.eu

Wsadowe (asynchroniczne) sprawdzanie numerów VAT UE

getVIESDataAsync – funkcja asynchroniczna, która na podstawie przesłanej partii numerów VAT pozwala na uzyskanie aktualnego statusu VAT UE oraz danych przedsiębiorcy.
Jako parametr podaj tablicę ciągów zawierającą numery VAT UE, dla których ma zostać sprawdzony status podatnika VAT UE, a dane osoby mającej dokonać śledzenia mają zostać pobrane.

Minimalna liczba przesłanych numerów VAT UE wynosi 2, a maksymalna — 99.

Poprawnie wywołana funkcja zwraca token, który jest niezbędny do pobrania wyników żądania. Poniższy przykład ilustruje, jak funkcje są używane w bibliotekach:

// Upload batch of VAT numbers and get their current VAT statuses and traders data
List numbers = new List {
	"PL1234567890,
	"DK64839576",
	"CZ8475630234"
};

string token = viesapi.GetVIESDataAsync(numbers);

if (token != null) {
	Console.WriteLine("Batch token: " + token);
} else {
	Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
}
// Upload batch of VAT numbers and get their current VAT statuses and traders data
char* numbers[] = {
	"PL1234567890,
	"DK64839576",
	"CZ8475630234"
};

token = viesapi_get_vies_data_async(viesapi, numbers, 3);

if (token != NULL) {
	printf("Batch token:  %s\n", token);
} else {
	printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
}
// Upload batch of VAT numbers and get their current VAT statuses and traders data
List numbers = new ArrayList<>();
numbers.add("PL1234567890");
numbers.add("DK64839576");
numbers.add("CZ8475630234");

String token = viesapi.getVIESDataAsync(numbers);

if (token != null) {
	System.out.println("Batch token: " + token);
} else {
	System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
}
// Upload batch of VAT numbers and get their current VAT statuses and traders data
const numbers = [
	'PL1234567890',
	'DK64839576',
	'CZ8475630234'
];

viesapi.getVIESDataAsync(numbers).then((token) => {
	console.log('Batch token: ' + token);
}).catch((e) => {
	console.log(e.message);
});
// Upload batch of VAT numbers and get their current VAT statuses and traders data
$numbers = array(
	'PL1234567890',
	'DK64839576',
	'CZ7710043187'
);

$token = $viesapi->get_vies_data_async($numbers);

if ($token) {
	echo '<pre>Batch token: ' . $token . '</pre>';
} else {
	echo '<p>Error: ' . $viesapi->get_last_error() . ' (code: ' . $viesapi->get_last_error_code() . ')</p>';
}
# Upload batch of VAT numbers and get their current VAT statuses and traders data
numbers = [
    'PL1234567890',
    'DK64839576',
    'CZ7710043187'
]

token = viesapi.get_vies_data_async(numbers)

if token:
    print('Batch token: ' + token)
else:
    print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' Not supported yet

Ze względu na asynchroniczny charakter funkcji, wyniki można pobrać po około 2-3 minutach. Nie ma znaczenia, czy w żądaniu wysłano 2 czy 99 numerów VAT UE.

Jeżeli przynajmniej jeden numer VAT UE podany w żądaniu ma nieprawidłowy format, system zwróci błąd „Numer VAT jest nieprawidłowy”.

Aby pobrać wyniki wysłanego żądania, należy zadzwonić pod numer getVIESDataAsyncResult funkcja, podając wartość tokena jako parametr wejściowy.

Ważna uwaga!

  1. Funkcja została przygotowana jako obejście błędu zwracanego przez system VIES: „The maximum number of concurrent requests has been reached”(MS_MAX_CONCURRENT_REQ). Zalecamy korzystanie z niego przy wysyłaniu próśb o Niemcy (DE)) I Francja (FR), co zwróciło powyższy błąd.
  2. Dopóki nie zostanie zakończony proces sprawdzania wszystkich numerów VAT UE przesłanych w żądaniu, wszystkie kolejne próby będą odrzucane, a błąd zostanie skorygowany.The maximum number of batch request has been reached, please re-submit your request later“.

getVIESDataAsyncResult– funkcja umożliwia pobieranie wyników wsadowych na podstawie tokena zwróconego przez getVIESDataAsync funkcjonować.

Poniższy przykład ilustruje wykorzystanie funkcji w bibliotekach:

// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
BatchResult result;

while ((result = viesapi.GetVIESDataAsyncResult(token)) == null) {
	if (viesapi.LastErrorCode != Error.BATCH_PROCESSING) {
		Console.WriteLine("Error: " + viesapi.LastError + " (code: " + viesapi.LastErrorCode + ")");
		return;
	}

	Console.WriteLine("Batch is still processing, waiting...");
	Thread.Sleep(30000);
}

// Batch result is ready
Console.WriteLine(result);
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
while ((result = viesapi_get_vies_data_async_result(viesapi, token)) == NULL) {
	if (viesapi_get_last_err_code(viesapi) != VIESAPI_ERR_BATCH_PROCESSING) {
		printf("Error: %s (code: %d)\n", viesapi_get_last_err(viesapi), viesapi_get_last_err_code(viesapi));
		return;
	}

	printf("Batch is still processing, waiting...\n");
	Sleep(30000);
}

// Batch result is ready
for (i = 0; i < result->NumbersCount; i++) {
	printf("Country:  %s\n", result->Numbers[i]->CountryCode);
	printf("VAT ID:   %s\n", result->Numbers[i]->VATNumber);
	printf("Is valid: %d\n", result->Numbers[i]->Valid);
	printf("\n");
}

for (i = 0; i < result->ErrorsCount; i++) {
	printf("Country:  %s\n", result->Errors[i]->CountryCode);
	printf("VAT ID:   %s\n", result->Errors[i]->VATNumber);
	printf("Error:    %s\n", result->Errors[i]->Error);
	printf("\n");
}
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
BatchResult result;

while ((result = viesapi.getVIESDataAsyncResult(token)) == null) {
	if (viesapi.getLastErrorCode() != eu.viesapi.client.Error.BATCH_PROCESSING) {
		System.out.println("Error: " + viesapi.getLastError() + " (code: " + viesapi.getLastErrorCode() + ")");
		return;
	}

	System.out.println("Batch is still processing, waiting...");
	Thread.sleep(30000);
}

// Batch result is ready
System.out.println(result);
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
const looper = setInterval(() => {
	viesapi.getVIESDataAsyncResult(token).then((result) => {
		// Batch result is ready
		console.log(result);
		clearInterval(looper);
	}).catch((e) => {
		console.log(e.message);
	});
}, 30000);
// Check batch result and download data (at production it usually takes 2-3 min for result to be ready)
while (($result = $viesapi->get_vies_data_async_result($token)) === false) {
	if ($viesapi->get_last_error_code() !== \VIESAPI\Error::BATCH_PROCESSING) {
		echo '<p>Error: ' . $viesapi->get_last_error() . ' (code: ' . $viesapi->get_last_error_code() . ')</p>';
		die();
	}

	echo '<p>Batch is still processing, waiting...</p>';
	sleep(30);
}

// Batch result is ready
echo '<pre>' . print_r($result, true) . '</pre>';
# Upload batch of VAT numbers and get their current VAT statuses and traders data
numbers = [
    'PL1234567890',
    'DK64839576',
    'CZ7710043187'
]

token = viesapi.get_vies_data_async(numbers)

if token:
    print('Batch token: ' + token)
else:
    print('Error: ' + viesapi.get_last_error() + ' (code: ' + str(viesapi.get_last_error_code()) + ')')
' Not supported yet

Dla każdego numeru VAT UE przekazanego w wywołaniu zbiorczym atrybuty są zgodne z odpowiedzią na getVIESData funkcja jest zwracana.

Pobieranie informacji o stanie konta użytkownika

Funkcja umożliwia pobranie wszystkich podstawowych informacji o koncie użytkownika, które wyświetlają się po zalogowaniu do konta na portalu viesapi.eu. Funkcja zwraca również informację o maksymalnej liczbie zapytań dostępnych w ramach wybranego planu (np. 5000 dla planu Biznes) oraz o łącznej liczbie wszystkich zapytań wykonanych w bieżącym miesiącu na koncie użytkownika.

Uwaga! Wywołanie funkcji nie nie wzrastać liczba wykonanych zapytań.

Poniższy przykład ilustruje sposób korzystania z funkcji bibliotecznych.

// Get current account status
AccountStatus account = viesapi.GetAccountStatus();

if (account != null) {
     Console.WriteLine(account);
}
else {
     Console.WriteLine("Error: " + viesapi.LastError);
}
// Get current account status
AccountStatus* account = viesapi_get_account_status(viesapi);

if (account != NULL) {
	printf("Plan name: %s\n", account->BillingPlanName);
	printf("Price: %.2f\n", account->SubscriptionPrice);
	printf("Number of queries: %d\n", account->TotalCount);
}
else {
	printf("Error: %s\n", viesapi_get_last_err(viesapi));
}
// Get current account status
AccountStatus account = viesapi.getAccountStatus();

if (account != null) {
     System.out.println(account);
}
else {
     System.err.println("Error: " + viesapi.getLastError());
}
// Get current account status
viesapi.getAccountStatus().then((account) => {
	console.log(account.toString());
}).catch((e) => {
	console.log(e.message);
});
// Get current account status
$account = $viesapi->get_account_status();

if ($account) {
     echo '<p>' . print_r($account, true) . '</p>';
}
else {
     echo '<p>Error: ' . $viesapi->get_last_error() . '</p>';
}
# Get current account status
account = viesapi.get_account_status()

if account:
    pprint(vars(account))
else:
    print u'Error: ' + viesapi.get_last_error()
'Get current account status
Dim account As AccountStatus
Set account = viesapi.GetAccountStatus()

If account Is Nothing Then
	Console.WriteLine("Error: {0}", viesapi.LastError)
Else
	Console.WriteLine(account.ToString())
End If

Rejestracja biblioteki .NET jako obiektu COM

The viesapiLibrary.dll bibliotekę można zarejestrować w systemie Windows jako tzw COM obiekt. Wtedy do funkcji biblioteki można się odwoływać z wielu różnych języków programowania i gotowych aplikacji, m.in. Microsoft Excel, Access, SQL Server, Dynamics lub Visual FoxPro.

Aby zarejestrować bibliotekę jako obiekt COM, wykonaj następujące kroki:

  1. Pobierz Biblioteka .NET zarchiwizować i rozpakować na dysku lokalnym w dowolne miejsce.
  2. Przejdź do katalogu z rozpakowanymi plikami biblioteki i znajdź com-register.bat plik.
  3. Wybierz com-register.bat plik za pomocą myszy i wybierz Run as administrator polecenie z menu kontekstowego.

Korzystanie z biblioteki .NET w MS Excel

Funkcje biblioteki viesapiLibrary.dll można wykorzystać w aplikacji MS Excel do pisania własnych funkcji i procedur w Visual Basic język. Aby było to możliwe konieczne jest:

  1. Zarejestrować ten viesapiLibrary.dll biblioteka jako A COM obiekt na Windows.
  2. Uruchom aplikację Excel. Wybierz DEVELOPER na wstążce, a następnie kliknij Visual Basic przycisk.
  3. w Visual Basic for Application okno, wybierz Tools i wtedy References z menu. w Available References lista, znajdź i wybierz VIESAPI Service Client for .NET Framework (C#). Potwierdź swój wybór za pomocą OK przycisk.
  4. Od Insert menu, wybierz Module i wklej kod funkcji przedstawiony w przykładach dla Visual Basic w nowym oknie.
  5. Wreszcie odpowiednie wartości w dla viesapi.ID oraz viesapi.Key należy ustawić. Sposób uzyskania klucza i klucza dostępu opisano w rozdziale Generowanie identyfikatora i klucza dostępu