4 effektive Methoden, um HTML-Tabellen nach Excel zu extrahieren (manuell & automatisiert)

2025-08-20 08:58:38 zaki zou

HTML-Tabellen nach Excel extrahieren

Überblick

Das Extrahieren von HTML-Tabellen in Excel ist eine häufige Anforderung für Datenanalysten, Forscher, Entwickler und Geschäftsleute, die häufig mit strukturierten Webdaten arbeiten. HTML-Tabellen enthalten oft wertvolle Informationen wie Finanzberichte, Produktkataloge, Forschungsergebnisse oder Leistungsstatistiken. Die Übertragung dieser Daten in ein sauberes und nutzbares Format in Excel kann jedoch knifflig sein – insbesondere bei komplexen Tabellen mit verbundenen Zellen (rowspan, colspan), verschachtelten Kopfzeilen oder großen Datenmengen.

Glücklicherweise gibt es mehrere Ansätze, um HTML-Tabellen in Excel-Dateien zu konvertieren. Diese Methoden reichen von schnellen, manuellen Kopier- und Einfügeaktionen, die für kleine Aufgaben geeignet sind, bis hin zu vollständig automatisierten Skripten mit VBA oder Python für große oder wiederkehrende Aufgaben.

In diesem Artikel werden wir vier effektive Methoden zur Extraktion von HTML-Tabellen nach Excel untersuchen:

  1. Manuelles Kopieren und Einfügen (einfachste Methode)
  2. Excel’s integrierte „Aus dem Web“-Funktion
  3. VBA-Makro (Excel-Automatisierung)
  4. Python (BeautifulSoup + Spire.XLS)

Schließlich vergleichen wir diese Ansätze in einer Zusammenfassungstabelle, um Ihnen bei der Auswahl der besten Methode für Ihren Anwendungsfall zu helfen.

Manuelles Kopieren und Einfügen (einfachste Methode)

Für kleine, einmalige Extraktionen ist die einfachste Option, direkt aus Ihrem Browser in Excel zu kopieren und einzufügen.

Eine HTML-Tabelle kopieren

Schritte:

  1. Öffnen Sie die HTML-Seite in einem Browser (z. B. Chrome, Edge oder Firefox).
  2. Markieren Sie die Tabelle, die Sie extrahieren möchten.
  3. Kopieren Sie sie mit Strg+C (oder Rechtsklick → Kopieren).
  4. Öffnen Sie Excel und fügen Sie sie mit Strg+V ein.

Vorteile:

  • Extrem einfach – keine Einrichtung oder Programmierung erforderlich.
  • Funktioniert sofort für kleine, saubere Tabellen.

Nachteile:

  • Manueller Prozess – mühsam und ineffizient bei häufigen oder großen Datenmengen.
  • Behält nicht immer verbundene Zellen oder Formatierungen bei.
  • Kann dynamische (JavaScript-gerenderte) Tabellen nicht zuverlässig handhaben.

Wann verwenden: Am besten geeignet für kleine Tabellen, Ad-hoc-Datenerfassung oder schnelle Tests.

Excel’s integrierte „Aus dem Web“-Funktion

Excel enthält ein leistungsstarkes „Daten abrufen und transformieren“-Tool (früher Power Query), mit dem Benutzer Tabellen direkt von einer Webseite abrufen können.

Excel-Funktion 'Aus dem Web'

Schritte:

  1. Öffnen Sie Excel.
  2. Gehen Sie zu DatenAus dem Web.
  3. Geben Sie die URL der Webseite ein, die die Tabelle enthält.
  4. Excel zeigt die erkannten Tabellen an; wählen Sie die gewünschte aus.
  5. Laden Sie die Daten in Ihr Arbeitsblatt.

Vorteile:

  • Direkte Integration in Excel – keine externen Tools erforderlich.
  • Funktioniert gut für strukturierte HTML-Tabellen.
  • Unterstützt die Aktualisierung – kann aktualisierte Daten aus derselben Quelle erneut abrufen.

Nachteile:

  • Begrenzte Unterstützung für dynamische oder JavaScript-gerenderte Inhalte.
  • Erkennt manchmal komplexe Tabellen nicht.
  • Erfordert Internetzugang und eine gültige URL (nicht für lokale HTML-Dateien, es sei denn, sie werden manuell importiert).

Wann verwenden: Am besten für Analysten, die live strukturierte Daten von Websites abrufen, die regelmäßig aktualisiert werden.

VBA-Makro (Excel-Automatisierung)

Für Benutzer, die häufig HTML-Tabellen extrahieren und mehr Kontrolle wünschen, bietet VBA (Visual Basic for Applications) eine hervorragende Lösung. Mit VBA können Sie Tabellen von einer URL abrufen und verbundene Zellen korrekt verarbeiten, was mit einfachem Kopieren und Einfügen nicht möglich ist.

VBA zum Extrahieren von HTML-Tabellen nach Excel

Schritte:

  1. Starten Sie Microsoft Excel.
  2. Drücken Sie Alt + F11, um den VBA-Editor zu öffnen.
  3. Klicken Sie mit der rechten Maustaste auf den Projektexplorer → EinfügenModul.
  4. Fügen Sie den bereitgestellten VBA-Code ein.
  5. Schließen Sie den VBA-Editor.
  6. Drücken Sie Alt + F8, wählen Sie den Makronamen aus und klicken Sie auf Ausführen.

Beispiel-VBA-Code:

Sub ExtractHTMLTableWithProperMerging()
    Dim html As Object, tables As Object, table As Object, row As Object, cell As Object
    Dim ws As Worksheet
    Dim iRow As Long, iCol As Long, realCol As Long
    Dim url As String
    Dim colspan As Integer, rowspan As Integer
    Dim cellTracker() As Boolean ' Belegte Zellen verfolgen

    ' Zielarbeitsblatt festlegen
    Set ws = ThisWorkbook.Sheets("Sheet1")
    ws.Cells.ClearContents
    ws.Cells.UnMerge ' Alle vorhandenen verbundenen Zellen löschen

    ' URL-Eingabe abrufen
    url = InputBox("Geben Sie die Webseiten-URL ein:", "HTML-Tabellen-Extraktor")
    If url = "" Then Exit Sub

    ' HTML laden
    Set html = CreateObject("htmlfile")
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", url, False
        .send
        html.body.innerHTML = .responseText
    End With

    ' Erste Tabelle abrufen (Index bei Bedarf ändern)
    Set tables = html.getElementsByTagName("table")
    If tables.Length = 0 Then
        MsgBox "Keine Tabellen gefunden!", vbExclamation
        Exit Sub
    End If
    Set table = tables(0)

    ' Zell-Tracker-Array initialisieren
    Dim maxRows As Long, maxCols As Long
    maxRows = table.Rows.Length
    maxCols = 0
    For Each row In table.Rows
        If row.Cells.Length > maxCols Then maxCols = row.Cells.Length
    Next
    ReDim cellTracker(1 To maxRows, 1 To maxCols)

    ' Tabelle verarbeiten
    iRow = 1
    For Each row In table.Rows
        realCol = 1 ' Tatsächliche Spaltenposition unter Berücksichtigung von Rowspans verfolgen

        ' Erste verfügbare Spalte in dieser Zeile finden
        While realCol <= maxCols And cellTracker(iRow, realCol)
            realCol = realCol + 1
        Wend

        iCol = 1 ' Logische Spaltenposition verfolgen
        For Each cell In row.Cells
            ' Zusammenführungsattribute abrufen
            colspan = 1
            rowspan = 1
            On Error Resume Next ' Falls Attribute nicht existieren
            colspan = cell.colspan
            rowspan = cell.rowspan
            On Error GoTo 0

            ' Bereits belegte Zellen überspringen (durch Rowspan von oben)
            While realCol <= maxCols And cellTracker(iRow, realCol)
                realCol = realCol + 1
            Wend

            If realCol > maxCols Then Exit For

            ' Wert schreiben
            ws.Cells(iRow, realCol).Value = cell.innerText

            ' Alle Zellen markieren, die von dieser Zelle belegt werden
            Dim r As Long, c As Long
            For r = iRow To iRow + rowspan - 1
                For c = realCol To realCol + colspan - 1
                    If r <= maxRows And c <= maxCols Then
                        cellTracker(r, c) = True
                    End If
                Next c
            Next r

            ' Zellen bei Bedarf verbinden
            If colspan > 1 Or rowspan > 1 Then
                With ws.Range(ws.Cells(iRow, realCol), ws.Cells(iRow + rowspan - 1, realCol + colspan - 1))
                    .Merge
                    .HorizontalAlignment = xlCenter
                    .VerticalAlignment = xlCenter
                End With
            End If

            realCol = realCol + colspan
            iCol = iCol + 1
        Next cell
        iRow = iRow + 1
    Next row

    ' Formatierung
    ws.UsedRange.Columns.AutoFit
    ws.UsedRange.Borders.Weight = xlThin
    MsgBox "Tabelle mit korrekter Zusammenführung extrahiert!", vbInformation
End Sub

Vorteile:

  • Läuft vollständig in Excel – keine externen Tools erforderlich.
  • Behandelt komplexe Tabellen mit verbundenen Zellen.
  • Kann für mehrere Tabellen oder geplante Ausführungen angepasst werden.

Nachteile:

  • Einrichtung erfordert Kenntnisse in VBA.
  • Kann JavaScript-gerenderte Daten nicht ohne zusätzliche Schritte verarbeiten.
  • Funktioniert nur in der Desktop-Version von Excel (nicht in Excel Online).

Wann verwenden: Perfekt für Benutzer, die regelmäßig ähnliche Tabellen extrahieren und eine Ein-Klick-Lösung wünschen.

Python (BeautifulSoup & Spire.XLS)

Für Entwickler oder Power-User bietet Python die flexibelste, skalierbarste und automatisierteste Lösung. Mit Bibliotheken wie BeautifulSoup zum Parsen von HTML und Spire.XLS for Python für die Excel-Bearbeitung können Sie Tabellen programmgesteuert abrufen, bereinigen und mit voller Kontrolle exportieren.

Schritte:

  1. Installieren Sie Python (3.8+ empfohlen).
  2. Erstellen Sie ein neues Projekt in Ihrer IDE (z. B. VS Code, PyCharm).
  3. Installieren Sie die Abhängigkeiten:
pip install requests beautifulsoup4 spire.xls
  1. Kopieren und führen Sie das folgende Skript aus.

Python-Code:

import requests

from bs4 import BeautifulSoup
from spire.xls import Workbook, ExcelVersion

# HTML-String von der URL abrufen
response = requests.get("https://cdn.e-iceblue.com/resource/sample.html")
html = response.text

# HTML parsen
soup = BeautifulSoup(html, "html.parser")
table = soup.find("table")  # Die erste Tabelle abrufen

# Excel initialisieren
workbook = Workbook()
sheet = workbook.Worksheets[0]

# Verbundene Zellen verfolgen, um sie später zu überspringen
skip_cells = set()

# Durch HTML-Zeilen und -Zellen iterieren
for row_idx, row in enumerate(table.find_all("tr")):
    col_idx = 1  # Excel-Spalten beginnen bei 1
    for cell in row.find_all(["th", "td"]):
        # Bereits verbundene Zellen überspringen
        while (row_idx + 1, col_idx) in skip_cells:
            col_idx += 1

        # Colspan/Rowspan-Werte abrufen (Standardwert 1, falls nicht vorhanden)
        colspan = int(cell.get("colspan", 1))
        rowspan = int(cell.get("rowspan", 1))

        # Zellenwert in Excel schreiben
        sheet.Range[row_idx + 1, col_idx].Text = cell.get_text(strip=True)

        # Zellen verbinden, wenn Colspan/Rowspan > 1
        if colspan > 1 or rowspan > 1:
            end_row = row_idx + rowspan
            end_col = col_idx + colspan - 1
            sheet.Range[row_idx + 1, col_idx, end_row, end_col].Merge()

            # Verbundene Zellen zum Überspringen markieren
            for r in range(row_idx + 1, end_row + 1):
                for c in range(col_idx, end_col + 1):
                    if r != row_idx + 1 or c != col_idx:  # Die Hauptzelle überspringen
                        skip_cells.add((r, c))

        col_idx += colspan

# Spaltenbreite im gesamten genutzten Bereich automatisch anpassen
sheet.AllocatedRange.AutoFitColumns()

# In Excel speichern
workbook.SaveToFile("TableToExcel.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

Vorteile:

  • Volle Kontrolle – kann Daten parsen, bereinigen und transformieren.
  • Behandelt verbundene Zellen korrekt.
  • Leicht skalierbar für mehrere Tabellen oder Websites.
  • Automatisierbar für geplante Aufgaben oder Stapelverarbeitungen.

Nachteile:

  • Erfordert Python-Installation und grundlegende Programmierkenntnisse.
  • Mehr Einrichtungsaufwand als bei integrierten Excel-Lösungen.
  • Externe Abhängigkeiten (BeautifulSoup, Spire.XLS).

Wann verwenden: Am besten für Entwickler oder fortgeschrittene Benutzer, die regelmäßig große oder komplexe Tabellen extrahieren.

Ausgabe:

Python extrahiert HTML-Tabellen nach Excel

Um die visuelle Attraktivität des generierten Excel-Arbeitsblatts in Python zu verbessern, können Sie Stile auf Zellen oder Arbeitsblätter in Excel anwenden.

Zusammenfassungstabelle: Beste Methode nach Anwendungsfall

Methode Am besten geeignet für Vorteile Nachteile Automatisierung?
Manuelles Kopieren & Einfügen Schnelle, einmalige Verwendung Schnell, keine Einrichtung Keine Automatisierung, Formatierungsprobleme ❌Nein
Excel aus dem Web Live strukturierte Daten Integriert, unterstützt Aktualisierung Begrenzt für dynamische Tabellen ❌Nein
VBA-Makro Wiederholte Aufgaben in Excel Automatisiert die Extraktion, behandelt Zusammenführungen Erfordert VBA-Kenntnisse ✅Ja
Python (BeautifulSoup + Spire.XLS) Entwickler, große/komplexe Tabellen Volle Kontrolle, skalierbar, automatisierbar Erfordert Programmierung & Abhängigkeiten ✅Ja

Abschließende Gedanken

Die Methode, die Sie wählen, hängt stark von Ihrem Anwendungsfall ab:

  • Wenn Sie nur gelegentlich eine kleine Tabelle benötigen, ist das manuelle Kopieren und Einfügen am schnellsten.
  • Wenn Sie strukturierte Daten von einer Webseite abrufen möchten, die häufig aktualisiert wird, ist Excel aus dem Web praktisch.
  • Für Geschäftsanwender, die täglich in Excel arbeiten und eine Automatisierung wünschen, ist ein VBA-Makro ideal.
  • Für Entwickler, die mehrere Datensätze oder komplexe HTML-Strukturen verarbeiten, bietet Python mit BeautifulSoup und Spire.XLS die größte Flexibilität und Skalierbarkeit.

Durch die Kombination dieser Methoden mit Ihrem Arbeitsablauf können Sie Stunden manueller Arbeit sparen und eine sauberere, zuverlässigere Datenextraktion nach Excel gewährleisten.

Siehe auch