Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

DHL Sendungsstatus

Forumthread: DHL Sendungsstatus

DHL Sendungsstatus
28.09.2024 04:25:16
Dominik
Hallo

Gibt es die Möglichkeit den DHL Sendungsstatus direkt in Excel anzuzeigen?
Nicht den Link sondern den Status
Danke

Gruß
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DHL Sendungsstatus
28.09.2024 15:50:40
Dominik
In Spalte A ist die Sendungsnummer
AW: DHL Sendungsstatus
28.09.2024 17:14:07
Zwenn
Hallo Dominik,

die von Ralf verlinkte Lösung stammt von mir. Wie er schon geschrieben hat, wird dort noch der IE verwendet. Den sollte man inzwischen vermeiden, weil er veraltet ist und von MS aktiv ausgemustert wurde. Ich habe mir die Sache noch einmal angeschaut und auch eine Lösung gefunden. Wie viele Sendungsnummern damit am Stück geprüft werden können weiß ich nicht. Selbst hatte ich nur eine einzige zur Verfügung, um zu prüfen ob das Makro ausspuckt, was ich will. Ich habe den Kurz-Status gewählt. Wenn Du was anderes oder mehr Datenfelder benötigst, muss das Makro entsprechend angepasst werden.

Ich gehe davon aus, dass Du sowieso nicht verstehen wirst, wie das Makro funktioniert, deshalb habe ich nix kommentiert. Das ist nicht böse gemeint, aber Du hast angegeben "VBA nein". Nix desto trotz musst Du Dir ein JSON angucken, um zu entscheiden, welche Daten Du wirklich brauchst. Das ist nix wildes, wenn man weiß, wie man es "lesbar" machen kann. Das funktioniert folgendermaßen.

Die Daten, die die Seite von DHL verwendet werden in einer Textdatei zur Verfügung gestellt, die im JSON Format vorliegt. Das ist ein Datenaustauschformat für Maschinen, welches jedoch auch gut von Menschen gelesen werden kann, wenn man Zeilenumbrüche und Einrückungen einfügt. Dafür gibt es Dienste im Internet. Ich nutze den folgenden:
https://jsonformatter.curiousconcept.com/

Lade die folgede URL in Deinem Browser, kopiere den Textwust und füge ihn im oben verlinkten Konverter ein. Danach klickst Du auf den Button "Process" und bekommst eine lesbarere Version des Textes ausgegeben. Darin schaust Du nach, welche Datenfelder Du benötigst. Wenn Du etwas anderes oder zusätzliche Daten brauchst, teile mir das hier mit. Auch, in welche Spalten die Daten geschrieben werden sollen. Dann ergänze ich das Makro entsprechend.

Hier die URL zum JSON, das meiner letzten Sendung entstammt.
https://www.dhl.de/int-verfolgen/data/search?language=de&piececode=358313036018

Hinweis:
Solltest Du FireFox als Browser verwenden, baut der direkt eine lesbare Struktur auf. Da er aber versucht den Menschen zu unterstützen, klicke oben auf Rohdaten und verfahre so, wie ich es mit dem Konverter erklärt habe. Nenne mir dann einfach die Datenfelder, die Du in welche Spalten eingefügt haben möchtest.

Wie das Makro arbeitet:
Zunächst wird ermittelt, wie viele Zeilen in der Tabelle aus der das Makro ausgeführt wird, in Spalte A belegt sind. Danach werden die darin stehenden Sendungsnummern nacheinander durchgegangen und in Spalte B wird das Datenfeld kurzStatus aus dem JSON eingetragen. Kann das JSON nicht geladen werden, wird ein entsprechender Hinweis mit dem zugehörigen HTTP-Status eingetragen. Das kann passieren, wenn der Webserver bei zu vielen Anfragen in kurzer Zeit die Bearbeitung der Anfragen ablehnt oder die Verbindung sonstwie gestört ist. Am HTTP-Status kann nachvollzogen werden, wo da Problem vermutlich liegt. Das ist eigentlich schon alles und wird vom nachfolgenden Makro bewerkstelligt. Es wird kein Browser verwendet, der Zugriff pro Sendungsnummer erfolgt relativ schnell:


Sub DHLSendungsStatus()

Const url As String = "https://www.dhl.de/int-verfolgen/data/search?language=de&piececode="
Dim piececode As String
Dim json As Dictionary
Dim ws As Worksheet
Dim firstRow As Long
Dim lastRow As Long
Dim currRow As Long

Set ws = ThisWorkbook.ActiveSheet 'Bei Bedarf anpassen
lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
firstRow = 2

With CreateObject("MSXML2.XMLHTTP.6.0")
For currRow = firstRow To lastRow
piececode = ws.Cells(currRow, 1)
.Open "GET", url & piececode, False
.send

If .Status = 200 Then
Set json = JsonConverter.ParseJson(.responseText)
ws.Cells(currRow, 2) = json("sendungen")(1)("sendungsdetails")("sendungsverlauf")("kurzStatus")
Else
MsgBox "JSON nicht geladen. HTTP-Status " & .Status
End If
Next currRow
End With
End Sub


Neben dem geposteten Code, der von mir stammt, habe ich zum Auslesen des JSON den JSON Converter und das universal Dictionary von Tim Hall eingebunden:
https://github.com/VBA-tools/VBA-JSON
https://github.com/VBA-tools/VBA-Dictionary

Das schreibe ich nur der Vollständigkeit halber und weil ich zwei Codes verwende, die ich sehr schätze, die aber nicht von mir stammen. Nur mit dem kurzen Teil von mir klappt es nicht. Es würde auch ohne die hervorragende Arbeit von Tim Hall gehen, aber warum, wenn er sich schon die Arbeit für eine universell funktionierende Lösung gemacht hat und sie uns einfach so zur Verfügung stellt.

Alles zusammen findest Du in der folgenden Datei. Deine Sendungsnummern kannst Du einfach in Spalte A ab Zeile 2 eintragen. Nach dem Start des Makros durch einen Klick auf den Button Start, sollten die abgearbeitet werden, wie erläutert:
https://www.herber.de/bbs/user/172473.xlsm

Viele Grüße

Zwenn
Anzeige
AW: DHL Sendungsstatus
30.09.2024 03:11:33
Dominik
Hallo

Wahnsinn das du dir soviel Zeit genommen hast dieses Thema zu beantworten Respekt und vielen Dank.
Was ich noch bräuchte ist wann das Label erstellt wurde also die elektronische Ankündügung, dann den ersten Scan Problem ist das meistens erst Abholung erfolgreich in der Verfolgung kommt aber nicht jedes mal. Als letztes hätte ich noch das Datum vom letzten Scan bzw wann es zugestellt wurde.
Noch einmal vielen Dank
Anzeige
AW: DHL Sendungsstatus
30.09.2024 23:06:20
Zwenn
Hallo Dominik,

ich hatte Deine Antwort heute schon gesehen, bin aber gerade etwas im Stress. Deshalb die Nachfrage zu späterer Stunde. Aber macht nix, Du bist ja eh eher Nachts unterwegs ;-)

Elektronische Ankündigung ist klar. Das ist ja quasi immer der erste Status-Text. Zeitstempel auch klar. Die gehören immer zu den entsprechenden Status-Texten. Aber was genau ist der erste Scan für Dich?

Dann haben wir noch das Problem mit der Verdrehung der Reihenfolge, so dass der Ausgelifert-Status nicht immer zum Schluss da steht. Das habe ich selbst noch nie gesehen und brauche dazu Beispiele. Beispiele bedeutet, ich brauche Sendungsnummern von Dir, an denen ich problematische Ausgaben nachvollziehen kann. Kannst Du welche Zur Verfügung stellen?

Viele Grüße

Zwenn
Anzeige
AW: DHL Sendungsstatus
01.10.2024 00:03:52
Dominik
Hallo

das ist z.b eine 00340434782563000078 da braucht ich nicht wann abgeholt sondern Mo, 30.09.2024, 11:40
Die Sendung wurde von DHL bearbeitet und wird für den Weitertransport in die Region des Empfängers vorbereitet.
Das ist für mich der wichtigere Scan Problem ist das abgeholt und der Scan auch verdreht sein können je nach dem was als erstes eintrifft.
Ausgeliefert ist nicht unbedingt das wichtige es reicht auch aktueller Status da der sowieso Irgendwann zugestellt ist. Und am besten alles mit Datum um auch nachzuvollziehen wie lange es gedauert hat

00340434469577099211 hier ist abgeholt nach Scan im Eingangszentrum welchen ich bräuchte
00340434782563000016 hier anders rum
Anzeige
AW: DHL Sendungsstatus
04.10.2024 13:56:58
Zwenn
Hallo Dominik,

da dieser Thread morgen im Archiv verschwunden sein wird, schreibe ich hier noch kurz in der Hoffnung, dass Du noch reinschaust.

Ich werde frühestens am Sonntag dazu kommen, das Makro zu erweitern. Ich glaube so viel ist da gar nicht zu tun, aber ich bin einfach noch nicht dazu gekommen und bekomme nun von heute bis Sonntag Besuch. Wenn ich soweit bin, eröffne ich einen neuen Thread.

Viele Grüße

Zwenn
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige