Cześć, Udało mi się w VBA Excel napisać funkcję i loguje się poprawnie. Otrzymuje komunikat "200".
Ale mam kłopot żeby dalej pójść z apką. Chciałbym wsadowo wysyłać i pobierać faktury.
Samo utworzenie faktur XML nie stanowi dla mnie problemu. Czy macie jakiś fragment kodu VBA lub jakąś podpowiedź?
Oczywiście otwarty jestem aby nad tym popracować wspólnie. Gotowy jestem aby udostępnić co już mam.
pozdrawiam
KSEF w VBA Excel
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
- Rejestracja: dni
- Ostatnio: dni
- Postów: 5
Chwilowo temat odlozylem. W pracy nie robię tego typu zadań. Od 14.06 mam tydzień urlopu i wrócę do tematu. Pozdrawiam
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2
MikolajR napisał(a):
Chwilowo temat odlozylem. W pracy nie robię tego typu zadań. Od 14.06 mam tydzień urlopu i wrócę do tematu. Pozdrawiam
Witaj, Udało Ci się wrócić do tego tematu ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3891
Od lat korzystam z kontrolek chilkat. Nawet jak robię w dotnecie. I polecam tak inwestycje, oszczędzisz sporo pracy i nerwów. No i masz fajne przykłady: https://tools.chilkat.io/PostmanCollection/vbscript/list-S1NlRi5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbg
- Rejestracja: dni
- Ostatnio: dni
- Postów: 50
Panczo napisał(a):
Od lat korzystam z kontrolek chilkat. Nawet jak robię w dotnecie. I polecam tak inwestycje, oszczędzisz sporo pracy i nerwów. No i masz fajne przykłady: https://tools.chilkat.io/PostmanCollection/vbscript/list-S1NlRi5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbg
Ciekawa biblioteka. Taki szwajcarski scyzoryk, którym można sobie wiele wystrugać.
Jednakże, jeśli ktoś nie ma czasu lub zdolności manualnych to właśnie pracuję nad wersją COM/OLE Automation (również do użytku w środowiskach skryptowych) mojej biblioteki do obsługi KSeF, e-deklaracji i JPK. Na dniach powinienem udostępnić wersję rozwojową do testów.
Tutaj przykłay w PowerShell (nie posiadam MS Office):
# LibGovPL - KSeF - Nawiazywanie sesji interaktywnej tokenem i pobranie faktury
try {
# Tworzenie obiektu zaplecza
$backend = New-Object -ComObject LibGovPL.lgcBackend
# Tworzenie obiektu komunikacji KSeF
$ksef = $backend.CreateKSeF()
# Tworzenie obiektu klienta HTTP
$ksef.HTTPClient = $backend.CreateHTTPClient('')
# Tworzenie klucza RSA ze wskazanego pliku
$ksef.RSAKeyTest = $backend.CreateRSAKey('', 'kseftest.pem')
# Ustawiamy parametry polaczenia
$ksef.Nip = '1111111111'
$ksef.Token = '1111111111111112222222222222333333333333444444444445555555555666'
$ksef.GateType = 2 # Rodzaj serwera KSeF: 0 - produkcja, 1 - demo, 2 - test
$ksef.FormCode = 1 # Wersja struktury wysylanych plikow FA: 0 - FA(1), 1 - FA(2)
# Nawiazywanie sesji interaktywnej tokenem
$response = $ksef.SessionInitToken()
# Napisz token sesji
Write-Host 'Token sesji: ' $response.SessionToken().Token()
# Napisz odpowiedz w postaci surowego JSON
Write-Host 'Surowa odpowiedz JSON: ' $response.GetRawResponse()
$response = $null
# Odczekaj pare sekund po nawiazaniu sesji bo inaczej serwer odrzuci zadanie
Write-Host 'Momencik...'
Start-Sleep -Seconds 10
# Pobierz fakture i zapisz do pliku
$ksef.InvoiceGet('1111111111-20241127-333333333333-QQ', 'fa.xml')
Write-Host 'Pobrano fakture'
}
catch {
Write-Host -f Red "Blad: $_"
}
if ((Get-Variable -Name ksef -ErrorAction SilentlyContinue) -And ($ksef -ne $null)) {
if ($ksef.SessionActive) {
# Konczenie sesji KSeF
$ksef.SessionTerminate(0)
}
$ksef = $null
}
$backend = $null
# LibGovPL - KSeF - Nawiazywanie sesji interaktywnej certyfikatem i wyszukiwanie synchronicznie
try {
# Tworzenie obiektu zaplecza
$backend = New-Object -ComObject LibGovPL.lgcBackend
# Tworzenie obiektu podpisu certyfikatem kwalifikowanym lub pieczecia
$certSigner = $backend.CreateCertificateSigner('')
# Wybierz certyfikat przez systemowe okienko wyboru certyfikatu
$cert = $certSigner.UISelect()
if ($cert -ne $null) {
# Tworzymy obiekt obslugi podpisu XAdES
$xades = $backend.CreateXAdES()
# Ustawiamy obiekt obslugi podpisu certyfikatem
$xades.Signer = $certSigner
# Tworzenie obiektu komunikacji KSeF
$ksef = $backend.CreateKSeF()
# Tworzenie obiektu klienta HTTP
$ksef.HTTPClient = $backend.CreateHTTPClient('')
# Tworzenie klucza RSA ze wskazanego pliku bo uzyjemy dodatkowego szyfrowania AES
$ksef.RSAKeyDemo = $backend.CreateRSAKey('', 'ksefdemo.pem')
# Ustawiamy obiekt sygnatury XAdES
$ksef.XAdES = $xades
# Uzywamy wybranego certyfikatu
$ksef.Certificate = $cert
# Ustawiamy parametry polaczenia
$ksef.Nip = '1111111111'
$ksef.GateType = 1 # Rodzaj serwera KSeF: 0 - produkcja, 1 - demo, 2 - test
$ksef.Encryption = $true # Wlacz dodatkowe szyfrowanie dokumentow algorytmem AES
$ksef.FormCode = 1 # Wersja struktury wysylanych plikow FA: 0 - FA(1), 1 - FA(2)
# Czyscimy informacje o ostatnim bledzie
$backend.ClearLastError()
$aborted = $false
try {
# Nawiazywanie sesji interaktywnej wybranym certyfikatem
$response = $ksef.SessionInitSigned()
}
catch {
$aborted = $true
# Sprawdz, czy anulowano wprowadzanie PIN
if (($backend.LastError -ne $null) -And ($backend.LastError.ExceptionClass -eq 'EAbort')) {
Write-Host -f Yellow 'Anulowano wprowadzanie nr PIN'
}
else {
Write-Host -f Red "Blad: $_"
}
}
if ($aborted -eq $false) {
# Napisz token sesji
Write-Host 'Token sesji: ' $response.SessionToken().Token()
# Napisz odpowiedz w postaci surowego JSON
Write-Host 'Surowa odpowiedz JSON: ' $response.GetRawResponse()
# Odczekaj pare sekund po nawiazaniu sesji bo inaczej serwer odrzuci zadanie
Write-Host 'Momencik...'
Start-Sleep -Seconds 10
# Tworzenie obiektu kryteriow zapytania
$criteria = $ksef.CreateKSeFObject('TKSeFQueryCriteriaInvoiceDetail')
# Wyszukaj faktury sprzedazowe (gdzie w fa wystepujamy jako "Podmiot1")
$criteria.SubjectType = 0 # 0 - subject1, 1 - subject2, 2 - subject3, ...
# Okres wystawienia wysukiwanych faktur
$criteria.InvoicingDateFrom = (Get-Date).AddDays(-30)
$criteria.InvoicingDateTo = Get-Date
# Tylko wystawione w walucie PLN i EUR
$criteria.CurrencyCodesStr = 'PLN,EUR'
# Tworzymy obiekt zapytania o faktury
$request = $ksef.CreateKSeFObject('TKSeFQueryInvoiceRequest')
# Ustawiamy obiekt kryteriow
$request.QueryCriteria = $criteria
Write-Host 'Surowe zadanie: ' $request.GetAsJSON()
# Zapytaj o faktury synchronicznie (10 na stronie, offset 0)
$response = $ksef.QueryInvoiceSync($request, 10, 0)
Write-Host 'Surowe odpowiedz: ' $response.GetRawResponse()
Write-Host 'Ilosc faktur: ' $response.InvoiceHeaderList().Count()
for ($i = 0; $i -lt $response.InvoiceHeaderList().Count(); $i++) {
# Wypisz numery znalezionych faktur
Write-Host $response.InvoiceHeaderList().Item($i).InvoiceReferenceNumber()
}
}
}
else {
Write-Host -f Yellow 'Anulowano wybor certyfikatu'
}
}
catch {
Write-Host -f Red "Blad: $_"
}
if ((Get-Variable -Name ksef -ErrorAction SilentlyContinue) -And ($ksef -ne $null)) {
if ($ksef.SessionActive) {
# Konczenie sesji KSeF
$ksef.SessionTerminate(0)
}
$ksef = $null
}
$xades = $null
$cert = $null
$certSigner = $null
$backend = $null
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2
michalgw napisał(a):
Panczo napisał(a):
Od lat korzystam z kontrolek chilkat. Nawet jak robię w dotnecie. I polecam tak inwestycje, oszczędzisz sporo pracy i nerwów. No i masz fajne przykłady: https://tools.chilkat.io/PostmanCollection/vbscript/list-S1NlRi5wb3N0bWFuX2NvbGxlY3Rpb24uanNvbg
Ciekawa biblioteka. Taki szwajcarski scyzoryk, którym można sobie wiele wystrugać.
Jednakże, jeśli ktoś nie ma czasu lub zdolności manualnych to właśnie pracuję nad wersją COM/OLE Automation (również do użytku w środowiskach skryptowych) mojej biblioteki do obsługi KSeF, e-deklaracji i JPK. Na dniach powinienem udostępnić wersję rozwojową do testów.Tutaj przykłay w PowerShell (nie posiadam MS Office):
# LibGovPL - KSeF - Nawiazywanie sesji interaktywnej tokenem i pobranie faktury try { # Tworzenie obiektu zaplecza $backend = New-Object -ComObject LibGovPL.lgcBackend # Tworzenie obiektu komunikacji KSeF $ksef = $backend.CreateKSeF() # Tworzenie obiektu klienta HTTP $ksef.HTTPClient = $backend.CreateHTTPClient('') # Tworzenie klucza RSA ze wskazanego pliku $ksef.RSAKeyTest = $backend.CreateRSAKey('', 'kseftest.pem') # Ustawiamy parametry polaczenia $ksef.Nip = '1111111111' $ksef.Token = '1111111111111112222222222222333333333333444444444445555555555666' $ksef.GateType = 2 # Rodzaj serwera KSeF: 0 - produkcja, 1 - demo, 2 - test $ksef.FormCode = 1 # Wersja struktury wysylanych plikow FA: 0 - FA(1), 1 - FA(2) # Nawiazywanie sesji interaktywnej tokenem $response = $ksef.SessionInitToken() # Napisz token sesji Write-Host 'Token sesji: ' $response.SessionToken().Token() # Napisz odpowiedz w postaci surowego JSON Write-Host 'Surowa odpowiedz JSON: ' $response.GetRawResponse() $response = $null # Odczekaj pare sekund po nawiazaniu sesji bo inaczej serwer odrzuci zadanie Write-Host 'Momencik...' Start-Sleep -Seconds 10 # Pobierz fakture i zapisz do pliku $ksef.InvoiceGet('1111111111-20241127-333333333333-QQ', 'fa.xml') Write-Host 'Pobrano fakture' } catch { Write-Host -f Red "Blad: $_" } if ((Get-Variable -Name ksef -ErrorAction SilentlyContinue) -And ($ksef -ne $null)) { if ($ksef.SessionActive) { # Konczenie sesji KSeF $ksef.SessionTerminate(0) } $ksef = $null } $backend = $null# LibGovPL - KSeF - Nawiazywanie sesji interaktywnej certyfikatem i wyszukiwanie synchronicznie try { # Tworzenie obiektu zaplecza $backend = New-Object -ComObject LibGovPL.lgcBackend # Tworzenie obiektu podpisu certyfikatem kwalifikowanym lub pieczecia $certSigner = $backend.CreateCertificateSigner('') # Wybierz certyfikat przez systemowe okienko wyboru certyfikatu $cert = $certSigner.UISelect() if ($cert -ne $null) { # Tworzymy obiekt obslugi podpisu XAdES $xades = $backend.CreateXAdES() # Ustawiamy obiekt obslugi podpisu certyfikatem $xades.Signer = $certSigner # Tworzenie obiektu komunikacji KSeF $ksef = $backend.CreateKSeF() # Tworzenie obiektu klienta HTTP $ksef.HTTPClient = $backend.CreateHTTPClient('') # Tworzenie klucza RSA ze wskazanego pliku bo uzyjemy dodatkowego szyfrowania AES $ksef.RSAKeyDemo = $backend.CreateRSAKey('', 'ksefdemo.pem') # Ustawiamy obiekt sygnatury XAdES $ksef.XAdES = $xades # Uzywamy wybranego certyfikatu $ksef.Certificate = $cert # Ustawiamy parametry polaczenia $ksef.Nip = '1111111111' $ksef.GateType = 1 # Rodzaj serwera KSeF: 0 - produkcja, 1 - demo, 2 - test $ksef.Encryption = $true # Wlacz dodatkowe szyfrowanie dokumentow algorytmem AES $ksef.FormCode = 1 # Wersja struktury wysylanych plikow FA: 0 - FA(1), 1 - FA(2) # Czyscimy informacje o ostatnim bledzie $backend.ClearLastError() $aborted = $false try { # Nawiazywanie sesji interaktywnej wybranym certyfikatem $response = $ksef.SessionInitSigned() } catch { $aborted = $true # Sprawdz, czy anulowano wprowadzanie PIN if (($backend.LastError -ne $null) -And ($backend.LastError.ExceptionClass -eq 'EAbort')) { Write-Host -f Yellow 'Anulowano wprowadzanie nr PIN' } else { Write-Host -f Red "Blad: $_" } } if ($aborted -eq $false) { # Napisz token sesji Write-Host 'Token sesji: ' $response.SessionToken().Token() # Napisz odpowiedz w postaci surowego JSON Write-Host 'Surowa odpowiedz JSON: ' $response.GetRawResponse() # Odczekaj pare sekund po nawiazaniu sesji bo inaczej serwer odrzuci zadanie Write-Host 'Momencik...' Start-Sleep -Seconds 10 # Tworzenie obiektu kryteriow zapytania $criteria = $ksef.CreateKSeFObject('TKSeFQueryCriteriaInvoiceDetail') # Wyszukaj faktury sprzedazowe (gdzie w fa wystepujamy jako "Podmiot1") $criteria.SubjectType = 0 # 0 - subject1, 1 - subject2, 2 - subject3, ... # Okres wystawienia wysukiwanych faktur $criteria.InvoicingDateFrom = (Get-Date).AddDays(-30) $criteria.InvoicingDateTo = Get-Date # Tylko wystawione w walucie PLN i EUR $criteria.CurrencyCodesStr = 'PLN,EUR' # Tworzymy obiekt zapytania o faktury $request = $ksef.CreateKSeFObject('TKSeFQueryInvoiceRequest') # Ustawiamy obiekt kryteriow $request.QueryCriteria = $criteria Write-Host 'Surowe zadanie: ' $request.GetAsJSON() # Zapytaj o faktury synchronicznie (10 na stronie, offset 0) $response = $ksef.QueryInvoiceSync($request, 10, 0) Write-Host 'Surowe odpowiedz: ' $response.GetRawResponse() Write-Host 'Ilosc faktur: ' $response.InvoiceHeaderList().Count() for ($i = 0; $i -lt $response.InvoiceHeaderList().Count(); $i++) { # Wypisz numery znalezionych faktur Write-Host $response.InvoiceHeaderList().Item($i).InvoiceReferenceNumber() } } } else { Write-Host -f Yellow 'Anulowano wybor certyfikatu' } } catch { Write-Host -f Red "Blad: $_" } if ((Get-Variable -Name ksef -ErrorAction SilentlyContinue) -And ($ksef -ne $null)) { if ($ksef.SessionActive) { # Konczenie sesji KSeF $ksef.SessionTerminate(0) } $ksef = $null } $xades = $null $cert = $null $certSigner = $null $backend = $null
Rozwiniesz wspomniany przez Ciebie temat "obsługi KSeF, e-deklaracji i JPK" ?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 50
Gimley napisał(a):
Rozwiniesz wspomniany przez Ciebie temat "obsługi KSeF, e-deklaracji i JPK" ?
Tu znajdziesz więcej informacji: link
Jeśli będziesz miał dodatkowe pytania to wal śmiało, ale chyba najlepiej w wątku podanym w linku.