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

Forumthread: Markierte Einträge aus Listview auslesen

Markierte Einträge aus Listview auslesen
01.12.2021 14:39:05
CaptainJackSparrow
Hi @all,
ich habe auf meiner Userform ein Listview mit Daten.
Userbild
Ich möchte je nach Auswahl eines oder mehrere Einträge, diese in eine EMail als Anhang bringen. In der 3 Spalte ist der komplette Pfad der Datei abgelegt. Ich bringe es leider nicht hin. In diesem Fall auf dem Bild müssten der Mail also das 2. und 4. Dokument angehangen werden...
Könnte mir bitte jemand helfen?
Danke
Jack

Private Sub cmdEMail_Click()
Dim Anhang
If Me.lstFiles.SelectedItem Is Nothing Then
MsgBox "Bitte markieren Sie die Anhänge, die versendet werden sollen", vbInformation, "E-Mailversand vorbereiten"
Exit Sub
ElseIf Me.lstFiles.ListItems.Item(i).Selected Then
' MsgBox Me.lstFiles.ListItems.Item(i).Text
Dim Nachricht As Object, OutlookApplication As Object
Set OutlookApplication = CreateObject("Outlook.Application")
Set Nachricht = OutlookApplication.CreateItem(0)
With Nachricht
.To = "mailadresse@domain.tld"
.Subject = "Betreff "
With Me.lstFiles
For Anhang = 0 To .ListItems.Count - 1
If .SelectedItem.Selected(Anhang) = True Then
.Attachments.Add Anhang
End If
Next Anhang
End With
.Body = "Text eingeben"
.Display
End With
Set OutlookApplication = Nothing
Set Nachricht = Nothing
End If
End Sub
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ich würde ja immer ...
01.12.2021 15:31:10
Rudi
... eine ListBox anstatt so eines komplizierten Steuerelements benutzen.
Ein ListView habe ich noch nie gebraucht. Und kurze Recherche hat mir gezeigt, dass das viel zu kompliziert zu handhaben ist.
Gruß
Rudi
AW: ich würde ja immer ...
01.12.2021 18:06:55
CaptainJackSparrow
Hi Rudi,
Sagen wir mal so, ich habe bisher ich immer eine Listbox benutzt, wollte aber mal etwas anderes ausprobieren und so kompliziert ist das nicht… ok, diese Schleife da… die hat mich beschäftigt.
Vieles andere empfand ich als einfach.
Gruß
Jack
Anzeige
AW: Markierte Einträge aus Listview auslesen
01.12.2021 17:18:55
Nepumuk
Hallo Jack,
so:

Dim Anhang As ListItem
With ListView1
For Each Anhang In .ListItems
If Anhang.Selected Then .Attachments.Add Anhang.ListSubItems(2).Text
Next Anhang
End With
Gruß
Nepumuk
AW: Markierte Einträge aus Listview auslesen
01.12.2021 18:04:54
CaptainJackSparrow
Hi Nepumuk,
Danke Dir für die Nachricht. Wenn ich Deinen Code so sehe, ist das ziemlich nachvollziehbar :-)
Schönen Abend noch
Jack
Anzeige
AW: Markierte Einträge aus Listview auslesen
01.12.2021 18:09:18
Nepumuk
Hallo Jack,
ich sehe gerade, da ist noch ein Fehler drin. So ist es richtig:

Dim Anhang As ListItem
For Each Anhang In ListView1.ListItems
If Anhang.Selected Then .Attachments.Add Anhang.ListSubItems(2).Text
Next Anhang
Sonst bezieht sich .Attachments auf das ListView-Control.
Gruß
Nepumuk
Anzeige
AW: Markierte Einträge aus Listview auslesen
01.12.2021 18:30:21
CaptainJackSparrow
Ok danke…. Kam ja noch nicht dazu, es auszuprobieren…

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Markierte Einträge aus Listview auslesen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Userform: Öffne Excel und erstelle eine neue Userform. Füge ein ListView-Steuerelement hinzu, um die Dateien anzuzeigen.

  2. Füge Daten hinzu: Füge Daten in das ListView ein, indem du die ListItems-Sammlung nutzt. Jeder Eintrag sollte den Pfad in der dritten Spalte enthalten.

  3. E-Mail-Button erstellen: Füge einen Button hinzu, der beim Klicken ein E-Mail-Fenster öffnet. Verwende den folgenden VBA-Code:

    Private Sub cmdEMail_Click()
        Dim Anhang
        If Me.lstFiles.SelectedItem Is Nothing Then
            MsgBox "Bitte markieren Sie die Anhänge, die versendet werden sollen", vbInformation, "E-Mailversand vorbereiten"
            Exit Sub
        Else
            Dim Nachricht As Object, OutlookApplication As Object
            Set OutlookApplication = CreateObject("Outlook.Application")
            Set Nachricht = OutlookApplication.CreateItem(0)
            With Nachricht
                .To = "mailadresse@domain.tld"
                .Subject = "Betreff "
                With Me.lstFiles
                    For Anhang = 0 To .ListItems.Count - 1
                        If .SelectedItem.Selected(Anhang) = True Then
                            .Attachments.Add .ListItems(Anhang).ListSubItems(2).Text
                        End If
                    Next Anhang
                End With
                .Body = "Text eingeben"
                .Display
            End With
            Set OutlookApplication = Nothing
            Set Nachricht = Nothing
        End If
    End Sub
  4. Testen: Starte die Userform und teste die Funktionalität, indem du einige Einträge im ListView auswählst und auf den E-Mail-Button klickst.


Häufige Fehler und Lösungen

  • Fehler: E-Mail wird nicht gesendet

    • Überprüfe, ob die Outlook-Anwendung richtig konfiguriert ist und ob du die korrekte E-Mail-Adresse eingegeben hast.
  • Fehler: Anhänge werden nicht hinzugefügt

    • Stelle sicher, dass du die richtige Indexierung verwendest, um den Pfad aus der dritten Spalte des ListView zu extrahieren. Nutze .ListSubItems(2).Text, um den Pfad zu erhalten.

Alternative Methoden

Wenn du Probleme mit dem ListView hast oder eine einfachere Lösung suchst, kannst du auch eine ListBox verwenden. Die Implementierung ist ähnlich, jedoch weniger komplex:

Dim Anhang As Variant
For Each Anhang In Me.lstFiles.ListItems
    If Anhang.Selected Then
        ' Hier den Pfad zur Datei hinzufügen
    End If
Next Anhang

Praktische Beispiele

Hier ist ein Beispiel, wie du das ListView in einer Userform implementieren kannst. Du kannst es anpassen, um deine spezifischen Anforderungen zu erfüllen.

Private Sub UserForm_Initialize()
    With Me.lstFiles
        .ColumnHeaders.Add , , "Dateiname", 100
        .ColumnHeaders.Add , , "Typ", 50
        .ColumnHeaders.Add , , "Pfad", 250
        .ListItems.Add , , "Beispiel.txt", , "Textdatei", "C:\Beispiel\Beispiel.txt"
    End With
End Sub

Tipps für Profis

  • Nutze die ListView-Ereignisse, um die Benutzeroberfläche dynamisch zu gestalten. Beispielsweise kannst du beim Auswählen eines Eintrags automatisch weitere Details anzeigen.

  • Experimentiere mit den Eigenschaften des ListView, wie View, um das Erscheinungsbild anzupassen (z.B. lvwReport für eine detaillierte Ansicht).

  • Dokumentiere deinen Code gründlich, besonders wenn du mit VBA Excel ListView arbeitest, um die Wartbarkeit zu erhöhen.


FAQ: Häufige Fragen

1. Frage: Was ist der Unterschied zwischen ListView und ListBox?
Antwort: Eine ListView ist flexibler und kann mehrere Spalten anzeigen, während eine ListBox nur eine Liste von Einträgen in einer einzigen Spalte zeigt.

2. Frage: Wie kann ich die Elemente im ListView sortieren?
Antwort: Du kannst die SortKey-Eigenschaft des ListView verwenden und die Sortierung über die Sort-Methode steuern.

3. Frage: Kann ich andere Dateitypen im ListView anzeigen?
Antwort: Ja, du kannst jeden Dateityp anzeigen, indem du die entsprechenden Informationen in die ListItems-Sammlung hinzufügst. Achte darauf, die richtigen Dateipfade zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige