ChatGPT zum Schreiben von Excel VBA-Makros verwenden

Erste Schritte: Ihr erstes KI-generiertes VBA-Makro

ChatGPT kann vollständige, funktionsfähige VBA-Makros aus einfachen englischen Beschreibungen generieren. Um ein Makro auszuführen, öffnen Sie Excel, drücken Sie Alt + F11, um den VBA-Editor zu öffnen, fügen Sie ein neues Modul ein (Einfügen > Modul), fügen Sie den Code ein und führen Sie ihn mit F5 aus. Ihr erster Prompt sollte einfach und testbar sein — etwa "Schreibe ein VBA-Makro, das den ausgewählten Bereich hellblau einfärbt." Dies überprüft, ob der generierte Code in Ihrer Umgebung läuft, bevor Sie komplexe Automatisierungen angehen.

Speichern Sie Ihre Arbeitsmappe immer als makrofähige Datei (.xlsm), nicht als normales .xlsx. Standardarbeitsmappen entfernen beim Speichern den gesamten VBA-Code. Wenn Sie eine Sicherheitswarnleiste unter dem Menüband sehen, klicken Sie auf "Inhalt aktivieren", um Makros zuzulassen. Führen Sie ChatGPT-generierten Code zunächst in einer Testkopie Ihrer Arbeitsmappe aus, bis Sie sicher sind, dass sich das Makro wie erwartet verhält.

Produktivitätsmakros: Praxisbeispiele, die Sie heute verwenden können

Makro 1: Datentabelle automatisch formatieren

Prompt: "Schreibe ein VBA-Makro, das die aktuelle Auswahl nimmt, die Kopfzeile fett formatiert, allen Datenzellen untere Rahmen hinzufügt, die Spaltenbreiten automatisch anpasst und die oberste Zeile fixiert."

Generierter Code:

Sub FormatDataTable()
    Dim rng As Range
    Set rng = Selection
    
    ' Kopfzeilenformatierung
    With rng.Rows(1)
        .Font.Bold = True
        .Interior.Color = RGB(68, 114, 196)
        .Font.Color = RGB(255, 255, 255)
    End With
    
    ' Rahmen zu allen Zellen hinzufügen
    With rng.Borders
        .LineStyle = xlContinuous
        .Weight = xlThin
        .Color = RGB(180, 180, 180)
    End With
    
    ' Spaltenbreite automatisch anpassen
    rng.EntireColumn.AutoFit
    
    ' Oberste Zeile fixieren
    ActiveWindow.SplitRow = 1
    ActiveWindow.FreezePanes = True
    
    MsgBox "Tabelle erfolgreich formatiert!", vbInformation
End Sub

Dieses Makro ist sicher und rückgängig machbar (verwenden Sie Strg+Z nach der Ausführung) und demonstriert wesentliche VBA-Muster: Range-Objekte, With-Blöcke für effiziente Eigenschaftszuweisung und Benutzerfeedback über MsgBox.

Makro 2: Jedes Arbeitsblatt als separate PDF exportieren

Prompt: "Schreibe ein VBA-Makro, das jedes Arbeitsblatt der aktiven Arbeitsmappe als separate PDF-Datei exportiert, gespeichert im gleichen Ordner wie die Arbeitsmappe, mit Dateinamen im Format 'Arbeitsmappenname_Blattname.pdf'. Ausgeblendete Blätter sollen übersprungen werden."

Generierter Code:

Sub ExportSheetsAsPDF()
    Dim ws As Worksheet
    Dim folderPath As String
    Dim pdfName As String
    
    folderPath = ThisWorkbook.Path & "\"
    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Visible = xlSheetVisible Then
            pdfName = folderPath & _
                      Replace(ThisWorkbook.Name, ".xlsm", "") & _
                      "_" & ws.Name & ".pdf"
            
            ws.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:=pdfName, _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True
            
            Debug.Print "Exportiert: " & pdfName
        End If
    Next ws
    
    MsgBox "Export abgeschlossen! Details im Direktfenster (Strg+G).", vbInformation
End Sub

Dieses Makro verwendet ExportAsFixedFormat, dieselbe Engine, die Excel für Datei > Speichern unter > PDF verwendet. Es durchläuft die Worksheets-Sammlung, überspringt ausgeblendete Blätter und erstellt Dateinamen dynamisch durch Zeichenfolgenverkettung. Die Debug.Print-Anweisungen ermöglichen die Überprüfung der Ausgabe im Direktfenster.

Makro 3: E-Mails mit Outlook aus Excel-Daten versenden

Prompt: "Schreibe ein VBA-Makro, das E-Mail-Adressen aus Spalte A (beginnend bei A2), Betreffzeilen aus Spalte B und Nachrichtentext aus Spalte C liest. Für jede Zeile soll eine E-Mail über Outlook gesendet werden. Stoppe, wenn Spalte A leer ist. Füge eine 2-Sekunden-Verzögerung zwischen den Sendevorgängen ein."

Generierter Code:

Sub SendBulkEmails()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim i As Long
    Dim lastRow As Long
    
    On Error Resume Next
    Set OutApp = GetObject(, "Outlook.Application")
    If OutApp Is Nothing Then
        Set OutApp = CreateObject("Outlook.Application")
    End If
    On Error GoTo 0
    
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To lastRow
        If Cells(i, 1).Value = "" Then Exit For
        
        Set OutMail = OutApp.CreateItem(0)
        With OutMail
            .To = Cells(i, 1).Value
            .Subject = Cells(i, 2).Value
            .Body = Cells(i, 3).Value
            .Send
        End With
        
        Application.Wait Now + TimeValue("00:00:02")
    Next i
    
    Set OutMail = Nothing
    Set OutApp = Nothing
    MsgBox "Alle E-Mails gesendet!", vbInformation
End Sub

Die Application.Wait-Zeile erzwingt eine 2-Sekunden-Verzögerung zwischen den Sendevorgängen, was hilft, die Ratenbegrenzung oder Spamfilter von Outlook bei Massensendungen zu umgehen. Die Fehlerbehandlung mit On Error Resume Next und der Nothing-Prüfung behandelt elegant den Fall, dass Outlook noch nicht ausgeführt wird.

Prompt Engineering für besseren VBA-Code

Die Qualität des von ChatGPT generierten VBA hängt stark davon ab, wie Sie die Anfrage formulieren. Verwenden Sie diesen strukturierten Ansatz:

  1. Definieren Sie den Auslöser: "Bei Klick auf eine Schaltfläche ausführen" vs "Automatisch beim Öffnen der Arbeitsmappe ausführen" vs "Auf den ausgewählten Bereich anwenden".
  2. Geben Sie die Datenpositionen an: "Spalte A enthält Kundennamen ab A2, Spalte B enthält E-Mail-Adressen."
  3. Beschreiben Sie das genaue Ergebnis: "Für jede Zeile ein neues Arbeitsblatt mit dem Kundennamen erstellen und die Daten dorthin kopieren."
  4. Formulieren Sie Anforderungen an die Fehlerbehandlung: "Zeilen mit fehlenden E-Mail-Adressen überspringen statt einen Fehler anzuzeigen."
  5. Nennen Sie Einschränkungen: "Die Arbeitsmappe hat 50.000 Zeilen, optimiere auf Geschwindigkeit" oder "Muss in Excel 2016 unter Windows funktionieren."

Profi-Tipp: Teilen Sie bei komplexen Makros die Anfrage in kleinere Teile auf. Fragen Sie zuerst nach der Hauptschleifenstruktur, dann nach jeder Unterroutine einzeln. Bitten Sie ChatGPT, beim Schreiben Kommentare hinzuzufügen — das erleichtert die Fehlersuche erheblich.

Debugging von KI-generiertem VBA-Code

KI-generierte Makros funktionieren selten beim ersten Mal perfekt. Hier ist ein systematischer Debugging-Workflow:

  1. Zuerst kompilieren: Gehen Sie im VBA-Editor zu Debuggen > VBAProject kompilieren. Dies fängt Syntaxfehler, nicht deklarierte Variablen und fehlende Verweise vor der Laufzeit ab.
  2. Option Explicit hinzufügen: Wenn dem generierten Code Option Explicit am Modulanfang fehlt, fügen Sie es hinzu. Dies erzwingt die Variablendeklaration und fängt Tippfehler in Variablennamen ab.
  3. Haltepunkte verwenden: Klicken Sie in den linken Rand neben einer Zeile, um einen Haltepunkt zu setzen, und drücken Sie dann F8, um zeilenweise durchzugehen. Fahren Sie mit der Maus über Variablen, um deren aktuelle Werte anzuzeigen.
  4. Debug.Print-Anweisungen hinzufügen: Fügen Sie Debug.Print "Zeile: " & i & " Wert: " & Cells(i,1).Value an strategischen Punkten ein, um den Ausführungsablauf zu verfolgen.
  5. Fehler zurück an ChatGPT senden: Kopieren Sie die genaue Fehlermeldung und Zeilennummer und fragen Sie: "Ich habe 'Laufzeitfehler 1004: Anwendungs- oder objektdefinierter Fehler' in Zeile 12 erhalten. Hier ist der vollständige Code. Was verursacht das?" Die KI kann sich oft selbst korrigieren, wenn sie spezifisches Fehlerfeedback erhält.

Sicherheitsüberlegungen für KI-generierte Makros

VBA-Makros haben vollen Zugriff auf Ihr Dateisystem, die Registrierung und das Netzwerk. Behandeln Sie KI-generierten Code mit derselben Vorsicht wie aus dem Internet heruntergeladenen Code:

Aufbau eines wiederverwendbaren VBA-Toolkits

Speichern Sie Ihre zuverlässigsten KI-generierten Makros in einer persönlichen Makroarbeitsmappe (Personal.xlsb). Diese ausgeblendete Arbeitsmappe wird jedes Mal geladen, wenn Sie Excel öffnen, und macht Ihre Makros in allen Arbeitsmappen verfügbar. Um sie zu erstellen, zeichnen Sie ein beliebiges einfaches Makro auf und wählen Sie "Persönliche Makroarbeitsmappe" als Speicherort. Öffnen Sie dann den VBA-Editor, suchen Sie VBAProject (PERSONAL.XLSB) und fügen Sie Module mit Ihren kuratierten Makros hinzu.

Organisieren Sie Makros in Modulen nach Funktion: eines für Formatierung, eines für Datenexport, eines für E-Mail-Automatisierung und eines für Arbeitsblattverwaltung. Fügen Sie eine benutzerdefinierte Menübandregisterkarte hinzu (Datei > Optionen > Menüband anpassen) mit Schaltflächen, die Ihren am häufigsten verwendeten Makros zugeordnet sind, für Ein-Klick-Zugriff. Mit der Zeit ersetzt dieses Toolkit Dutzende manueller Schritte und gewährleistet Konsistenz in all Ihren Excel-Projekten.

Haben Sie Fragen oder einen Fehler in diesem Artikel gefunden?