{"id":7352,"date":"2025-12-12T07:11:44","date_gmt":"2025-12-12T05:11:44","guid":{"rendered":"https:\/\/www.ramses.de\/?p=7352"},"modified":"2025-12-16T16:18:13","modified_gmt":"2025-12-16T14:18:13","slug":"faq-project-grundlagen-speichern-eines-projektes-als-vorlage-2","status":"publish","type":"post","link":"https:\/\/www.ramses.de\/?p=7352","title":{"rendered":"FAQ Project Grundlagen &#8211; vorgangsordner anlegen per vba"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Problem :<\/h3>\n\n\n\n<p>Zur Verkn\u00fcpfung von Dokumenten an einen Ordner empfiehlt es sich Ordner anzulegen. Wie mache ich das, wenn ich die Ordner automatisiert per VBA anlegen will?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">L\u00f6sung :<\/h3>\n\n\n\n<p>Wir k\u00f6nnen zum einen Ordner f\u00fcr die ausgew\u00e4hlten Vorg\u00e4nge anlegen<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Sub Ordneranlegen()\nDim tsk As task, vAblage As String\n\n\nvAblage = ActiveProject.Path &amp; \"\\\"\nFor Each tsk In ActiveSelection.Tasks\n\nMkDir vAblage &amp; tsk.Name\n\nNext\nEnd Sub<\/code><\/pre>\n\n\n\n<p>Alternativ k\u00f6nnen wir auch Ordner f\u00fcr alle markierten Vorg\u00e4nge im Projekt anlegen und dabei die Gliederung zu ber\u00fccksichtigen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Sub CreateFoldersFromWBS()\n\n    Dim t As Task\n    Dim wbs As String\n    Dim path As String\n    Dim BasePath As String\n    Dim i As Integer\n    Dim elements() As String\n    Dim currentPath As String\n\n<em>    '*** Pfad ggf. anpassen ***<\/em>\n    BasePath = \"C:\\ProjectFolders\" ' Zielordner\n    \n<em>    ' *** Grundordner anlegen, falls nicht vorhanden ***<\/em>\n    If Dir(BasePath, vbDirectory) = \"\" Then\n        MkDir BasePath\n    End If\n\n    For Each t In ActiveProject.Tasks\n        If Not t Is Nothing Then\n            If t.Summary = False Or t.OutlineLevel = 1 Then\n                If Trim(t.Name) &lt;> \"\" Then\n\n<em>                    ' *** WBS-Nummer (z. B. \"1.2.3\")  ***<\/em>\n                    wbs = t.OutlineNumber\n\n<em>                    ' *** WBS zerlegen  ***<\/em>\n                    elements = Split(wbs, \".\")\n\n<em>                    ' *** Pfad St\u00fcck f\u00fcr St\u00fcck aufbauen  ***<\/em>\n                    currentPath = BasePath\n                    \n                    For i = LBound(elements) To UBound(elements)\n                        \n<em>                        ' *** Name des jeweiligen Abschnitts = OutlineNumber bis zur aktuellen Ebene  ***<\/em>\n                        Dim levelWBS As String\n                        levelWBS = Join$(Split(wbs, \".\", i + 1), \".\")\n                        \n<em>                        ' *** passenden Vorgang zur aktuellen Ebene finden  ***<\/em>\n                        Dim t2 As Task\n                        For Each t2 In ActiveProject.Tasks\n                            If Not t2 Is Nothing Then\n                                If t2.OutlineNumber = levelWBS Then\n                                    \n                                    ' Ordnername = \"WBS - Vorgangsname\"\n                                    currentPath = currentPath &amp; \"\\\" &amp; levelWBS &amp; \" - \" &amp; CleanFileName(t2.Name)\n                                    \n                                    ' Ordner anlegen, wenn n\u00f6tig\n                                    If Dir(currentPath, vbDirectory) = \"\" Then\n                                        MkDir currentPath\n                                    End If\n                                    \n                                    Exit For\n                                End If\n                            End If\n                        Next t2\n                    Next i\n                    \n                End If\n            End If\n        End If\n    Next t\n\n    MsgBox \"Ordnerstruktur erfolgreich erstellt!\", vbInformation\n\nEnd Sub\n\n\n<em>' *** Hilfsfunktion: Ung\u00fcltige Ordnerzeichen entfernen  ***<\/em>\nFunction CleanFileName(fname As String) As String\n    Dim invalidChars As Variant\n    invalidChars = Array(\"\\\", \"\/\", \":\", \"*\", \"?\", \"\"\"\", \"&lt;\", \">\", \"|\")\n    \n    Dim c As Variant\n    For Each c In invalidChars\n        fname = Replace(fname, c, \"_\")\n    Next\n    CleanFileName = fname\nEnd Function\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Problem : Zur Verkn\u00fcpfung von Dokumenten an einen Ordner empfiehlt es sich Ordner anzulegen. Wie mache ich das, wenn ich die Ordner automatisiert per VBA &#8230; <a title=\"FAQ Project Grundlagen &#8211; vorgangsordner anlegen per vba\" class=\"read-more\" href=\"https:\/\/www.ramses.de\/?p=7352\" aria-label=\"Mehr Informationen \u00fcber FAQ Project Grundlagen &#8211; vorgangsordner anlegen per vba\">Weiterlesen &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53],"tags":[99],"class_list":["post-7352","post","type-post","status-publish","format-standard","hentry","category-project","tag-project"],"_links":{"self":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/7352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7352"}],"version-history":[{"count":3,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/7352\/revisions"}],"predecessor-version":[{"id":7358,"href":"https:\/\/www.ramses.de\/index.php?rest_route=\/wp\/v2\/posts\/7352\/revisions\/7358"}],"wp:attachment":[{"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7352"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7352"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ramses.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}