Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1532to1536
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ordner, Unterordner und Dateien in Klasse ablegen

Ordner, Unterordner und Dateien in Klasse ablegen
13.01.2017 15:46:08
Verzweifelt
Hallo liebe Community!
Bislang konnte ich mir anhand der vielen Threads immer selber helfen und musste keine Fragen stellen. Damit ist es jetzt vorbei.
Ich versuche mich gerade das erste mal an einem Klassenmodul und möchte folgendes realisieren. Ich habe einen Quellenpfad den ich einer Klasse übergeben möchte (Quellenpfad und Ordnername). Des Weiteren möchte ich die Unterordner (Unterordnerpfad und Unterordnername) aufgelistet (per Collection in einer Klasse) und zu jedem Unterordner wiederum die dazugehörigen Dateien (Dateipfad und Dateiname) aufgelistet (per Collection in einer Klasse) haben.

  • 'clsUnterordner
    Private m_objUnterordner As clsDetails
    private m_strOrdername as string
    private m_strOrdnerpfad as string
    Private Sub Class_Initialize()
    Set m_objUnterordner = New clsDetails
    End Sub
    
    Private Sub Class_Terminate()
    Set m_objUnterordner = Nothing
    End Sub
    

    Public Property Get Unterordner(vntIndex As Variant) As clsDetails
    Set Unterordner = m_objUnterordner(vntIndex)
    End Property
    Public Property Get Anzahl() As Long
    Anzahl = m_objUnterordner.Count
    End Property
    Public Property Get Ordnerpfad() As string
    Ordnerpfad = m_strOrdnerpfad
    End Property
    Public Property Get Ordnername() As string
    Ordnername = m_strOrdnername
    End Property
    Public Property Let Ordnerpfad(strOrdnerpfad As String)
    m_strOrdnerpfad = strOrdnerpfad
    End Property
    Public Property Let Ordnername(strOrdnername As String)
    m_strOrdnername = strOrdnername
    End Property
    Public Function UnterordnerHinzufügen(strUnterordnername As String, strUnterordnerpfad As  _
    String)
    Dim objDatei As clsDetails
    If Exists(strUnterordnername & strUnterordnerpfad) Then
    MsgBox "Dieser Eintrag existiert bereits"
    Else
    Set objUnterordner = New clsDetails
    objUnterordner.Name = strUnterordnername
    objUnterordner.Pfad = strUnterordnerpfad
    m_objUnterordner.Add objUnterordner, strUnterordnername & strUnterordnerpfad
    End If
    End Function
    
    Public Function Exists(vntIndex As Variant) As Boolean
    On Error Resume Next
    Exists = Not CBool(m_objUnterordner(vntIndex) Is Nothing)
    End Function
    
    Public Sub Remove(vntIndex As Variant)
    m_objUnterordner.Remove vntIndex
    End Sub
    

  • 'clsDetails
    Private m_strName As String
    Private m_strPfad As String
    Public Property Get Name() As String
    Name = m_strName
    End Property
    Public Property Get Pfad() As String
    Pfad = m_strPfad
    End Property
    Public Property Let Name(strName As String)
    m_strName = strName
    End Property
    Public Property Let Pfad(strPfad As String)
    m_strPfad = strPfad
    End Property

  • Das Prinzip möchte ich auch für die Dateien haben DateiHinzufügen, DateiAnzahl usw., eben wie ein richtiges Verzeichnis möchte ich später die Klasse/Klassen ansprechen. Jedoch weiß ich nicht wie ich das weiter vererben soll?
    Ich bitte um eure Hilfe und Beispiele, vielen Dank!

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Ordner, Unterordner und Dateien in Klasse ablegen
    14.01.2017 16:07:04
    Verzweifelt
    Also nochmal...
    Ich habe mir eine Applikation gebastelt die mir unter Einbezug eines Quellenpfades (Ordner) alle darin befindlichen Unterordner und Dateien ausliest und diese in einer Listbox als Vorschau darstellt, das klappt auch alles wunderbar. Zusätzlich möchte ich aber die gefundenen Unterordner und deren Dateien in einer Klasse/n speichern. Soweit ich weiß brauche ich auf jedenfall ein Collection für die Unterordner und quasi dazu ein Collection für die Dateien eines Unterordners. Die Klasse/n soll/en die Struktur eines 2D-Array haben, jedenfalls stelle ich mir das so vor. Ansprechen möchte ich das dann wie folgt:
    objOrdner.Name/Pfad 'Quellenordner Pfad bzw. Name
    objOrdner.Unterordner(1).Name/Pfad 'Unterordner Pfad bzw. Name
    objOrdner.Unterordner(1).Datei(1).Name/Pfad 'Vom ersten Unterordner der ersten Datei den Namen bzw. Pfad
    objOrdner.Unterordner(1).Datei.Anzahl 'Gibt Anzahl der Dateien aus dem ersten Unterordner wieder.
    Mit FSO hole ich mir bereits Dateien und lasse sie mir in einer Listbox anzeigen. Mit der Shell hole ich mir Detailierte Informationen. Was ich möchte, ist in der Listboc nach Ordner/Dateien zu filtern und ggf. direkt beim einlesen Daten zu manipulieren. Daher halte ich eine Klasse/n für sinnvoll.
    Aktuell kann ich Unterordner und Dateien hinzufügen, nur haben die keine Zusammengehörigkeit, die ich aber möchte. Hier mein bisheriger Code:
    
    'clsUnterordner
    Option Explicit
    Private m_objUnterordner As Collection
    Private Sub Class_Initialize()
    Set m_objUnterordner = New Collection
    End Sub
    Private Sub Class_Terminate()
    Set m_objUnterordner = Nothing
    End Sub
    Public Property Get UnterordnerIndex(vntIndex As Variant) As clsEigenschaften
    Set UnterordnerIndex = m_objUnterordner(vntIndex)
    End Property
    Public Property Get Unterordner() As Collection
    Set Unterordner = m_objUnterordner
    End Property
    Public Property Get UnterordnerAnzahl() As Long
    UnterordnerAnzahl = m_objUnterordner.Count
    End Property
    Public Function UnterordnerHinzufügen(strPfad As String, strName As String)
    Dim objUnterordner As clsEigenschaften
    If Exists(strPfad & strName) Then
    MsgBox "Dieser Eintrag existiert bereits"
    Else
    Set objUnterordner = New clsEigenschaften
    objUnterordner.Pfad = strPfad
    objUnterordner.Name = strName
    m_objUnterordner.Add objUnterordner, strPfad & strName
    End If
    End Function
    Public Function Exists(vntIndex As Variant) As Boolean
    On Error Resume Next
    Exists = Not CBool(m_objUnterordner(vntIndex) Is Nothing)
    End Function
    Public Sub Remove(vntIndex As Variant)
    m_objUnterordner.Remove vntIndex
    End Sub
    

    
    'clsDatei
    Option Explicit
    Private m_objDatei As Collection
    Private Sub Class_Initialize()
    Set m_objDatei = New Collection
    End Sub
    Private Sub Class_Terminate()
    Set m_objDatei = Nothing
    End Sub
    Public Property Get DateiIndex(vntIndex As Variant) As clsEigenschaften
    Set DateiIndex = m_objDatei(vntIndex)
    End Property
    Public Property Get Datei() As Collection
    Set Datei = m_objDatei
    End Property
    Public Property Get DateiAnzahl() As Long
    DateiAnzahl = m_objDatei.Count
    End Property
    Public Function DateiHinzufügen(strPfad As String, strName As String)
    Dim objDatei As clsEigenschaften
    If Exists(strPfad & strName) Then
    MsgBox "Dieser Eintrag existiert bereits"
    Else
    Set objDatei = New clsEigenschaften
    objDatei.Pfad = strPfad
    objDatei.Name = strName
    m_objDatei.Add objDatei, strPfad & strName
    End If
    End Function
    Public Function Exists(vntIndex As Variant) As Boolean
    On Error Resume Next
    Exists = Not CBool(m_objDatei(vntIndex) Is Nothing)
    End Function
    Public Sub Remove(vntIndex As Variant)
    m_objDatei.Remove vntIndex
    End Sub
    

    
    'clsEigenschaften
    Option Explicit
    Private m_strName As String
    Private m_strPfad As String
    Public Property Get Name() As Date
    Name = m_strName
    End Property
    Public Property Get Pfad() As String
    Pfad = m_strPfad
    End Property
    Public Property Let Name(strName As String)
    m_strName = strName
    End Property
    Public Property Let Pfad(strPfad As String)
    m_strPfad = strPfad
    End Property
    

    Wie bekomme ich eine Zusammengehörigkeit hin z.B. für:
    Unterordner1
    Datei1
    Datei2
    Datei3
    Unterordner2
    Datei4
    Datei5
    usw.
    Anzeige
    keine Lösung, aber...
    15.01.2017 16:50:51
    Michael
    Hi,
    wie Du den zahlreichen Antworten entnehmen kannst, werden Klassen hier eher stiefmütterlich behandelt.
    Lies die Daten in ein Tabellenblatt ein, und Du kannst problemlos sortieren, filtern usw. - ich kann mir nicht recht einen Zugriff vorstellen, der Klassenprogrammierung erfordern würde.
    Lad halt mal eine Beispielmappe hoch, aus der hervorgeht, was Du effektiv benötigst: wann & wie soll ein Zugriff worauf erfolgen?
    Schöne Grüße,
    Michael

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige