Witam,
Korzystam z weryfikatora NIPów który daje informację o statusie ale bez ID zapytania.
Przydałoby się mieć takie ID więc spróbowałem użyć poniższe makro.
Na jednym zmoich PC makro działa.
Niestety na PC na którym będzie ono docelowo używane makro pokazuje błąd.
Pominąłem linie która w przypadku nieokreślonego błędu kończy makro i dostałem info o błedzie (w załączniku więcej informacji) .
Prawdopodobnie na docelowym PC mam nowszą wersję excela.
Może ktoś już się z tym zmierzył? Da sie to jakoś ominąć w przypadku braku innego rozwiązania.
Pozdrawiam
Sub test()
Dim sArr As Variant
Dim el As Variant
sArr = Array("name", "nip", "statusVat", "regon", "pesel", "krs", "residenceAddress", "workingAddress", "representatives", "authorizedClerks", "partners", "registrationLegalDate", "registrationDenialBasis", "registrationDenialDate", "restorationBasis", "restorationDate", "removalBasis", "removalDate", "accountNumbers", "hasVirtualAccounts", "requestId")
For Each el In sArr
Debug.Print Podatnik_Info("7740001454", CStr(el))
Next el
End Sub
Function Podatnik_Info(sNIP As String, sData As String) As String
'Parametry dla sData: name, nip, statusVat, regon, pesel, krs, residenceAddress, workingAddress, representatives, authorizedClerks, partners, registrationLegalDate, registrationDenialBasis, registrationDenialDate, restorationBasis, restorationDate, removalBasis, removalDate, accountNumbers, hasVirtualAccounts, requestId
Dim ScriptControl As Object
Dim oHttpReq As Object
Dim Json As Object
Dim Resp As String
Dim sUrl As String
On Error GoTo Podatnik_Info_Error
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\D"
sNIP = .Replace(sNIP, "")
End With
Set ScriptControl = CreateObject("MSScriptControl.ScriptControl")
ScriptControl.Language = "JScript"
sUrl = "https://wl-api.mf.gov.pl/api/search/nip/" & sNIP & "?date=" & Format(Now, "yyyy-mm-dd")
Set oHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
With oHttpReq
.Open "Get", sUrl, False
.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64"
.SetRequestHeader "Accept", "application/json"
.Send
.WaitForResponse
Resp = .ResponseText
End With
Resp = VBA.Replace(Resp, "subject", "Subject")
Resp = VBA.Replace(Resp, "name", "Name")
Resp = VBA.Replace(Resp, "nip", "NIP")
Set Json = ScriptControl.Eval("(" + Resp + ")")
Select Case oHttpReq.Status
Case 400
Select Case Json.code
Case "WL-100": Podatnik_Info = "Wystąpił nieoczekiwany błąd serwera."
Case "WL-101": Podatnik_Info = "Pole 'data' nie może być puste."
Case "WL-102": Podatnik_Info = "Pole 'data' ma nieprawidłowy format."
Case "WL-103": Podatnik_Info = "Data nie może być datą przyszłą."
Case "WL-104": Podatnik_Info = "Pole 'REGON' nie może być puste."
Case "WL-105": Podatnik_Info = "Pole 'REGON' ma nieprawidłową długość. Wymagane 9 lub 14 znaków."
Case "WL-106": Podatnik_Info = "Pole 'REGON' zawiera niedozwolone znaki. Wymagane tylko cyfry."
Case "WL-107": Podatnik_Info = "Nieprawidłowy REGON."
Case "WL-108": Podatnik_Info = "Pole 'numer konta' nie może być puste."
Case "WL-109": Podatnik_Info = "Pole 'numer konta' ma nieprawidłową długość. Wymagane 26 znaków."
Case "WL-110": Podatnik_Info = "Pole 'numer konta' zawiera niedozwolone znaki. Wymagane tylko cyfry."
Case "WL-111": Podatnik_Info = "Nieprawidłowy numer konta bankowego."
Case "WL-112": Podatnik_Info = "Pole 'NIP' nie może być puste."
Case "WL-113": Podatnik_Info = "Pole 'NIP' ma nieprawidłową długość. Wymagane 10 znaków."
Case "WL-114": Podatnik_Info = "Pole 'NIP' zawiera niedozwolone znaki. Wymagane tylko cyfry."
Case "WL-115": Podatnik_Info = "Nieprawidłowy NIP."
Case "WL-116": Podatnik_Info = "Pole 'nazwa pomiotu' nie może być puste."
Case "WL-117": Podatnik_Info = "Pole 'nazwa pomiotu' za krótkie. Wymagane przynajmniej 5 znaków."
Case "WL-118": Podatnik_Info = "Data sprzed zakresu rejestru."
Case "WL-190": Podatnik_Info = "Niepoprawne żądanie."
Case "WL-195": Podatnik_Info = "Zaktualizowaliśmy bazę danych. Wykonaj ponownie zapytanie, aby otrzymać aktualne dane."
Case "WL-196": Podatnik_Info = "Trwa aktualizacja bazy danych. Spróbuj ponownie później."
Case Else: Podatnik_Info = "Nieznany błąd"
End Select
Exit Function
Case 200
If IsNull(Json.result.Subject) Then
Podatnik_Info = "Podmiot nie istnieje."
Exit Function
End If
If UCase(sData) = "REQUESTID" Then
Podatnik_Info = Json.result.requestId
Exit Function
End If
With Json.result.Subject
Select Case VBA.UCase$(sData)
Case "NAME": If IsNull(.Name) Then Podatnik_Info = "Null" Else Podatnik_Info = .Name
Case "NIP": If IsNull(.NIP) Then Podatnik_Info = "Null" Else Podatnik_Info = .NIP
Case "STATUSVAT": If IsNull(.statusVat) Then Podatnik_Info = "Null" Else Podatnik_Info = .statusVat
Case "REGON": If IsNull(.regon) Then Podatnik_Info = "Null" Else Podatnik_Info = .regon
Case "PESEL": If IsNull(.pesel) Then Podatnik_Info = "Null" Else Podatnik_Info = .pesel
Case "KRS": If IsNull(.krs) Then Podatnik_Info = "Null" Else Podatnik_Info = .krs
Case "RESIDENCEADDRESS": If IsNull(.residenceAddress) Then Podatnik_Info = "Null" Else Podatnik_Info = .residenceAddress
Case "WORKINGADDRESS": If IsNull(.workingAddress) Then Podatnik_Info = "Null" Else Podatnik_Info = .workingAddress
Case "REPRESENTATIVES": If IsNull(.representatives) Then Podatnik_Info = "Null" Else Podatnik_Info = .representatives
Case "AUTHORIZEDCLERKS": If IsNull(.authorizedClerks) Then Podatnik_Info = "Null" Else Podatnik_Info = .authorizedClerks
Case "PARTNERS": If IsNull(.partners) Then Podatnik_Info = "Null" Else Podatnik_Info = .partners
Case "REGISTRATIONLEGALDATE": If IsNull(.registrationLegalDate) Then Podatnik_Info = "Null" Else Podatnik_Info = .registrationLegalDate
Case "REGISTRATIONDENIALBASIS": If IsNull(.registrationDenialBasis) Then Podatnik_Info = "Null" Else Podatnik_Info = .registrationDenialBasis
Case "REGISTRATIONDENIALDATE": If IsNull(.registrationDenialDate) Then Podatnik_Info = "Null" Else Podatnik_Info = .registrationDenialDate
Case "RESTORATIONBASIS": If IsNull(.restorationBasis) Then Podatnik_Info = "Null" Else Podatnik_Info = .restorationBasis
Case "RESTORATIONDATE": If IsNull(.restorationDate) Then Podatnik_Info = "Null" Else Podatnik_Info = .restorationDate
Case "REMOVALBASIS": If IsNull(.removalBasis) Then Podatnik_Info = "Null" Else Podatnik_Info = .removalBasis
Case "REMOVALDATE": If IsNull(.removalDate) Then Podatnik_Info = "Null" Else Podatnik_Info = .removalDate
Case "ACCOUNTNUMBERS": If IsNull(.accountNumbers) Then Podatnik_Info = "Null" Else Podatnik_Info = "'" & .accountNumbers
Case "HASVIRTUALACCOUNTS": If IsNull(.hasVirtualAccounts) Then Podatnik_Info = "Null" Else Podatnik_Info = .hasVirtualAccounts
Case "REQUESTID": If IsNull(.requestId) Then Podatnik_Info = "Null" Else Podatnik_Info = .requestId
End Select
End With
Case Else: Podatnik_Info = "Błąd nr " & oHttpReq.Status & " " & oHttpReq.StatusText
End Select
If VBA.Len(Podatnik_Info) = 0 Then Podatnik_Info = "Null"
Set oHttpReq = Nothing
On Error GoTo 0
Exit Function
Podatnik_Info_Error:
Podatnik_Info = "Nieznany błąd."
End Function