Thema Datum  Von Nutzer Rating
Antwort
Rot Vererbung automatisch deakivieren od. aktivieren
06.02.2025 08:52:50 Yan
NotSolved
06.02.2025 12:33:03 Gast14323
Solved
06.02.2025 14:16:21 Gast13259
NotSolved

Ansicht des Beitrags:
Von:
Yan
Datum:
06.02.2025 08:52:50
Views:
179
Rating: Antwort:
  Ja
Thema:
Vererbung automatisch deakivieren od. aktivieren

Hallo,

ich habe eine Excel-Datei, die einen VBA-Code enthält, mit dem ich eine Verzeichnisstruktur automatisch erstellen kann. Das funktioniert grds. sehr gut.
Nur weiß ich noch nicht, wie ich es hinbekomme, dass auch die Vererbungen in den Verzeichnissen schon gesetzt werden.

Die Vererbungen sollen wie folgt gesetzt werden (schon bei Erstellung der Verzeichnisstruktur):

ROOT    >> Vererbung deaktiviert
Ebene 1 >> Vererbung aktiviert
Ebene 2 >> Vererbung aktiviert
Ebene 3 >> Vererbung deaktiviert

Hier mein bisheriger VBA-Code aus der Excel-Datei:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Option Explicit
 
#Const Develop = False
 
Sub Example_FolderCreate()
  Dim Data, Index, This
  Dim i As Long
  Dim Folder As String
 
  'Read in all values 
  'Wenn es in Zeile “1“ eine Überschrift gibt, dann hier „A2“ einsetzen!! 
  Data = Range("A2").CurrentRegion.Value 
  'Create a row pointer for each column 
  ReDim Index(1 To UBound(Data, 2))
  'Create an array for the folder items 
  ReDim This(0 To UBound(Data, 2))
  'Main path 
  This(0) = ThisWorkbook.Path
   
  'Initialize 
  For i = 1 To UBound(Data, 2)
    Index(i) = 1
  Next
   
  Do
    'Copy the items into our array 
    For i = 1 To UBound(Data, 2)
      This(i) = Data(Index(i), i)
    Next
    'Create the path 
    Folder = Join(This, "\") 
 
#If Develop Then
    Debug.Print Folder
#Else
    'Create it on disk 
    If Not FolderCreate(Folder) Then
      MsgBox Folder, vbCritical, "Can not create:" 
      Exit Sub
    End If
#End If
 
    'Find next item 
    i = UBound(Data, 2)
    Do
      'Last row? 
      If Index(i) = UBound(Data) Then
EndRow:
        'Start this column again from first row 
        Index(i) = 1
        'Go one column left 
        i = i - 1
        'Done? 
        If i < 1 Then Exit Sub
      Else
        'Next row 
        Index(i) = Index(i) + 1
        'Empty? 
        If IsEmpty(Data(Index(i), i)) Then
          'Start over 
          GoTo EndRow
        Else
          'Create this one in the next round 
          Exit Do
        End If
      End If
    Loop
  Loop
End Sub
 
Function FolderCreate(ByVal Path As String) As Boolean
  'Creates a complete sub directory structure 
  Dim Temp, i As Integer
  On Error GoTo ExitPoint
  If Dir(Path, vbDirectory) = "" Then 
    If Right$(Path, 1) = "\" Then Path = Left$(Path, Len(Path) - 1) 
    If Left$(Path, 2) = "\\" Then 
      i = InStr(3, Path, "\") 
      Temp = Split(Mid$(Path, i + 1), "\") 
      Temp(0) = Left$(Path, i) & Temp(0)
    Else
      Temp = Split(Path, "\") 
    End If
    Path = "" 
    For i = 0 To UBound(Temp)
      Path = Path & Temp(i) & "\" 
      If Dir(Path, vbDirectory) = "" Then MkDir Path 
    Next
  End If
  FolderCreate = True
ExitPoint:
End Function
 
Function FolderDelete(ByVal Path As String) As Boolean
  'Deletes a complete sub directory structure 
  Dim This As String
  Dim Temp, i As Integer
  On Error GoTo ExitPoint
  If Right$(Path, 1) <> "\" Then Path = Path & "\" 
  This = Path
  Do
    Do
      If Dir(This & "*.*") <> "" Then Kill This & "*.*" 
      Temp = Dir(This, vbDirectory)
      Do While Temp = "." Or Temp = ".." 
        Temp = Dir
      Loop
      If Temp = "" Then 
        Exit Do
      Else
        This = This & Temp & "\" 
      End If
    Loop
    RmDir This
    If This = Path Then
      Exit Do
    Else
      Temp = Split(This, "\") 
      ReDim Preserve Temp(0 To UBound(Temp) - 1)
      Temp(UBound(Temp)) = "" 
      This = Join(Temp, "\") 
    End If
  Loop
  FolderDelete = True
ExitPoint:
End Function
 
Sub Test()
  Dim Folder As String
  Dim R As Range
   
  Folder = ThisWorkbook.Path
  If Right(Folder, 1) <> "\" Then Folder = Folder & "\" 
'Angeben in welcher Spalte die Verkettung erfolgen soll: 
  For Each R In Range("E2", Range("E" & Rows.Count).End(xlUp)) 
    FolderCreate Folder & R
  Next
End Sub

-------------------------------------------------------------------

Ich freue mich auf Eure Hilfe.

Grüße,

Yan


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Vererbung automatisch deakivieren od. aktivieren
06.02.2025 08:52:50 Yan
NotSolved
06.02.2025 12:33:03 Gast14323
Solved
06.02.2025 14:16:21 Gast13259
NotSolved