Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dekodieren mit Base64

Forumthread: Dekodieren mit Base64

Dekodieren mit Base64
27.01.2022 10:55:27
Florian
Hi Leute,
mit diesen Code kodiere ich Strings mittels Base64.

Private Function EncodeBase64(ByRef arrData() As Byte) As String
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("B64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeBase64 = objNode.Text
Set objNode = Nothing
Set objXML = Nothing
End Function
Private Function DecodeBase64(ByVal strData As String) As Byte()
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("B64")
objNode.DataType = "bin.base64"
objNode.Text = strData
DecodeBase64 = objNode.nodeTypedValue
Set objNode = Nothing
Set objXML = Nothing
End Function
Danach speichere ich die Werte in einer Tabstob-gestrennten TXT Datei. Diese lese ich in Excel über VBA ein und nutze die Entkodierung.
Das hat wunderbar funktioniert bis eben. Habe es dann mal mit anderen Strings (länger) getestet und ich erhalte in dieser Zeile beim den Fehler 13 "Typen unverträglich".

DecodeBase64 = objNode.nodeTypedValue
Kann jemand helfen?
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dekodieren mit Base64
27.01.2022 11:00:57
SF
Feedback auf Antworten zu deinen anderen Fragen wäre auch nett.
AW: Dekodieren mit Base64
27.01.2022 11:50:39
Florian
Sorry, ich bin gerade mega busy und konnte noch nicht alles testen. Habe aber soeben geantwortet :)
Anzeige
;
Anzeige

Infobox / Tutorial

Dekodieren mit Base64 in Excel


Schritt-für-Schritt-Anleitung

Um Base64 in Excel zu dekodieren, kannst du die folgenden Schritte ausführen. Hierbei verwenden wir VBA, um die Daten zu kodieren und zu dekodieren.

  1. Öffne die VBA-Entwicklungsumgebung:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)", wähle "Einfügen" und dann "Modul".
  3. Füge den folgenden Code in das Modul ein:

Private Function EncodeBase64(ByRef arrData() As Byte) As String
    Dim objXML As MSXML2.DOMDocument
    Dim objNode As MSXML2.IXMLDOMElement
    Set objXML = New MSXML2.DOMDocument
    Set objNode = objXML.createElement("B64")
    objNode.DataType = "bin.base64"
    objNode.nodeTypedValue = arrData
    EncodeBase64 = objNode.Text
    Set objNode = Nothing
    Set objXML = Nothing
End Function

Private Function DecodeBase64(ByVal strData As String) As Byte()
    Dim objXML As MSXML2.DOMDocument
    Dim objNode As MSXML2.IXMLDOMElement
    Set objXML = New MSXML2.DOMDocument
    Set objNode = objXML.createElement("B64")
    objNode.DataType = "bin.base64"
    objNode.Text = strData
    DecodeBase64 = objNode.nodeTypedValue
    Set objNode = Nothing
    Set objXML = Nothing
End Function
  1. Verwende die Funktionen:
    • Um einen String zu kodieren, kannst du die Funktion EncodeBase64 verwenden, und um einen kodierten String zu dekodieren, nutze die Funktion DecodeBase64.

Häufige Fehler und Lösungen

  • Fehler 13: Typen unverträglich:

    • Dieser Fehler tritt häufig auf, wenn die Eingabewerte für die Funktion nicht in das erwartete Format konvertiert werden können. Stelle sicher, dass die Eingabewerte als Byte-Array übergeben werden.
  • Lösung:

    • Überprüfe, ob die Daten, die du dekodieren möchtest, korrekt formatiert sind. Eine gängige Methode ist, die Daten zuerst in ein Byte-Array zu konvertieren.

Alternative Methoden

Falls du keine VBA-Funktionen nutzen möchtest, kannst du auch Online-Tools verwenden, um Base64 zu dekodieren. Diese Tools sind oft benutzerfreundlich und erfordern keine Programmierkenntnisse.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Funktionen verwenden kannst:

Sub TestBase64()
    Dim originalText As String
    Dim encodedText As String
    Dim decodedBytes() As Byte
    Dim decodedText As String

    originalText = "Hallo Welt"
    encodedText = EncodeBase64 StrConv(originalText, vbFromUnicode)
    decodedBytes = DecodeBase64(encodedText)
    decodedText = StrConv(decodedBytes, vbUnicode)

    MsgBox "Original: " & originalText & vbCrLf & "Encoded: " & encodedText & vbCrLf & "Decoded: " & decodedText
End Sub

In diesem Beispiel wird ein einfacher String in Base64 kodiert und anschließend dekodiert.


Tipps für Profis

  • Verwende die MSXML2-Bibliothek:

    • Stelle sicher, dass die MSXML2-Bibliothek in deinem VBA-Projekt aktiviert ist, um die oben genannten Funktionen korrekt nutzen zu können.
  • Handling von großen Datenmengen:

    • Bei sehr großen Datenmengen kann es sinnvoll sein, die Daten in kleineren Blöcken zu kodieren und zu dekodieren, um Speicherprobleme zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich ein Bild in Base64 kodieren? Um ein Bild in Base64 zu kodieren, musst du zuerst das Bild als Byte-Array einlesen und dann die EncodeBase64-Funktion verwenden.

2. Wo finde ich die MSXML2-Bibliothek? Die MSXML2-Bibliothek ist in den meisten Excel-Installationen standardmäßig enthalten. Du kannst sie in den Referenzen im VBA-Editor aktivieren, indem du auf Extras > Verweise gehst und das entsprechende Kontrollkästchen aktivierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige