{"id":55000077,"date":"2002-08-01T00:00:00","date_gmt":"2020-10-18T13:34:25","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=77"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Dateien_verwalten_mit_Access","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/","title":{"rendered":"Dateien verwalten mit Access"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Autor: Andr&eacute; Minhorst, Duisburg<\/p>\n<p><\/b>!<\/p>\n<p><b>Bei vielen Anwendungen ist es notwendig, Dateien oder Verzeichnisse auszuw&auml;hlen und auf diese zuzugreifen. Das FileSystemObject der Scripting-Laufzeitbibliothek bietet eine Reihe von Methoden und Eigenschaften an, die praktisch jeden Zugriff auf das Filesystem von Windows erlauben. Im vorliegenden Beitrag lernen Sie einige interessante Beispiele f&uuml;r den Einsatz des FileSystemObjects in Zusammenarbeit mit Access kennen. Dazu basteln Sie sich einen kleinen Windows-Dateimanager in Form eines Access-Formulars, mit dem Sie bequem aus Ihrer Datenbankanwendung heraus kleinere Operationen wie z. B. das &ouml;ffnen, Kopieren, Verschieben oder L&ouml;schen von Dateien und Verzeichnissen ausf&uuml;hren k&ouml;nnen.<\/b><\/p>\n<p>Das FileSystemObject enth&auml;lt Objekte, Methoden und Eigenschaften f&uuml;r den Zugriff auf die Laufwerke, Ordner und Dateien des Filesystems von Windows.<\/p>\n<p>Sie k&ouml;nnen Informationen &uuml;ber alle genannten Objekte ermitteln und Ordner und Dateien erstellen, kopieren, ausschneiden, einf&uuml;gen, bearbeiten und l&ouml;schen.<\/p>\n<p>Prinzipiell k&ouml;nnen Sie durch die Programmierung mit dem FileSystemObject alle Aufgaben erledigen, die auch der Windows-Explorer (siehe Bild 1) zur Verf&uuml;gung stellt. <\/p>\n<p><IMG height=\"355\" src=\"..\/fileadmin\/_temp_\/{EA54F8E8-2249-4691-9E46-BB666C85DC3B}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Der klassische Windows-Explorer<\/span><\/b><\/p>\n<p>Wenn Sie die Methoden und Eigenschaften des FileSystemObjects mit den M&ouml;glichkeiten zusammenf&uuml;hren, die Access-Formulare bieten, k&ouml;nnen Sie sich Ihren eigenen kleinen Dateimanager mit Access erstellen und m&uuml;ssen nicht mehr auf die Windows-eigenen M&ouml;glichkeiten zur&uuml;ckgreifen.<\/p>\n<p>Dies ist vor allem interessant, wenn Sie umfangreichere Datenbanken haben, die den gesamten Funktionsumfang abdecken, den Ihre Mitarbeiter ben&ouml;tigen. <\/p>\n<p>Sie k&ouml;nnen den Dateimanager dann in die Access-Datenbank integrieren und m&uuml;ssen f&uuml;r einfache File-Operationen keine externe Anwendung mehr &ouml;ffnen.<\/p>\n<p>Au&szlig;erdem k&ouml;nnen Sie nach Belieben spezielle Funktionen hinzuf&uuml;gen, z. B. das Ausdrucken einer Dateiliste auf Papier (beispielsweise f&uuml;r die Verwendung als CD-Cover) oder die vom Windows-Explorer nicht unterst&uuml;tzte Funktion, die Gr&ouml;&szlig;e aller Verzeichnisse eines Laufwerks auf einen Blick anzuzeigen.<\/p>\n<p>Das ist vor allem interessant, wenn Sie sich wieder einmal fragen, in welchen Verzeichnissen eigentlich die ganzen Daten stecken, die Ihre Festplatte hoffnungslos verstopfen. Mit dem Windows-Explorer m&uuml;ssen Sie hierzu n&auml;mlich die Eigenschaften jedes einzelnen Verzeichnisses anzeigen, w&auml;hrend Sie mit einer selbst programmierten Funktion schnell die gew&uuml;nschten Daten ermitteln k&ouml;nnen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Um die Methoden und Eigenschaften des FileSystemObjects verwenden zu k&ouml;nnen, m&uuml;ssen Sie einen Verweis auf die entsprechende Bibliothek erstellen. Der Name der Bibliothek lautet Windows Scripting Runtime. Wie Sie einen Verweis auf eine Bibliothek erstellen, erfahren Sie in dem Beitrag Setzen von Verweisen auf Bibliotheken. Falls Sie diesen Verweis nicht finden, ist m&ouml;glicherweise der Windows Scripting Host nicht installiert oder aktiviert: In dem Fall finden Sie die ben&ouml;tigte Software im Internet unter www.microsoft.com\/msdownload\/vbscript\/scripting.asp. <\/p>\n<p><IMG height=\"263\" src=\"..\/fileadmin\/_temp_\/{EA54F8E8-2249-4691-9E46-BB666C85DC3B}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Das Formular frmDateimanager mit seinen Steuerelementen in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Als Beispiel f&uuml;r die Anwendung der Eigenschaften und Methoden des FileSystemObjects erstellen Sie ein Formular, mit dem Sie Verzeichnisse und Dateien anzeigen sowie die unterschiedlichsten Operationen mit diesen Elementen durchf&uuml;hren k&ouml;nnen.<\/p>\n<p>Erstellen Sie zun&auml;chst ein Beispielformular, von dem aus Sie die unterschiedlichen Aktionen ausf&uuml;hren und Laufwerke, Verzeichnisse und Dateien anzeigen k&ouml;nnen.<\/p>\n<p>Stellen Sie die Eigenschaften Bildlaufleisten, Datensatzmarkierer, Navigationsschaltfl&auml;chen und Trennlinien auf den Wert Nein ein.<\/p>\n<p>Erstellen Sie anschlie&szlig;end einige Steuerelemente auf dem neuen Formular und ordnen Sie diese wie in Bild 2 an. In Tabelle 1 finden Sie eine Liste der Steuerelemente mit ihren Namen und Funktionen.<\/p>\n<p>Das Kombinationsfeld cboLaufwerke soll alle Laufwerke des Filesystems anzeigen. Da es somit nicht an eine bestimmte Datenherkunft gebunden ist, sondern erst mit den gew&uuml;nschten Werten gef&uuml;llt wird, m&uuml;ssen Sie den Wert der Eigenschaft Herkunftsart von Tabelle\/Abfrage auf Wertliste &auml;ndern.<\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Steuerelement<\/b><\/p>\n<\/td>\n<td>\n<p><b>Funktion<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cboLaufwerke<\/p>\n<\/td>\n<td>\n<p>Auswahl des gew&uuml;nschten Laufwerks<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtVerzeichnis<\/p>\n<\/td>\n<td>\n<p>Anzeige des aktuellen Verzeichnisses<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdNeuerOrdner<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zum Anlegen eines neuen Ordners<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdLoeschen<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zum L&ouml;schen des ausgew&auml;hlten Objekts aus lstOrdner oder lstDateien<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdEinfuegen<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zum Einf&uuml;gen der mit cmdKopieren oder cmdAusschneiden markierten Datei<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdKopieren<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zur Auswahl einer zu kopierenden Datei<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>cmdAusschneiden<\/p>\n<\/td>\n<td>\n<p>Schaltfl&auml;che zur Auswahl einer auszuschneidenden Datei<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>lstOrdner<\/p>\n<\/td>\n<td>\n<p>Liste der Ordner, die sich in dem Verzeichnis in txtVerzeichnis befinden<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>lstDateien<\/p>\n<\/td>\n<td>\n<p>Liste der Dateien, die sich in dem Verzeichnis in txtVerzeichnis befinden<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>lblVerzeichnisse, lblDateien, lblGroesse, lblAenderungsdatum<\/p>\n<\/td>\n<td>\n<p>Beschriftungsfelder, die bei Doppelklick einen Sortiervorgang ausl&ouml;sen<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtSortVerzeichnisname, txtSortDateiname, txtSortGroesse, txtSortAenderung<\/p>\n<\/td>\n<td>\n<p>Versteckte Textfelder zum Speichern der aktuellen Sortierung der Listenspalten<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtAktion<\/p>\n<\/td>\n<td>\n<p>Verstecktes Textfeld zum Speichern der auszuf&uuml;hrenden Aktion, also Kopieren oder Ausschneiden<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtMarkiert<\/p>\n<\/td>\n<td>\n<p>Verstecktes Textfeld zum Speichern ausgew&auml;hlter Dateien\/Ordner<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtSortierfeld<\/p>\n<\/td>\n<td>\n<p>Verstecktes Textfeld zum Speichern der zu sortierenden Listenspalte<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>txtTyp<\/p>\n<\/td>\n<td>\n<p>Verstecktes Textfeld zum Festlegen, ob Datei oder Verzeichnis ausgew&auml;hlt ist<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 1: Steuerelemente des Formulars frmDateimanager<\/b><\/p>\n<p>Um das Kombinationsfeld mit den n&ouml;tigen Daten zu f&uuml;llen, ben&ouml;tigen Sie eine Prozedur, die beim &ouml;ffnen des Formulars ausgel&ouml;st wird. <\/p>\n<p>Die Prozedur (s. Quellcode 1) deklariert zun&auml;chst die Objektvariablen f&uuml;r das FileSystemObject namens objFSO und f&uuml;r ein Drive-Objekt namens objDrive sowie die Zeichenkette, die zum Zusammenstellen der Wertliste verwendet wird.<\/p>\n<p>Anschlie&szlig;end wird die FileSystemObject-Objektvariable initiiert. In einer For Each-Schleife werden alle Laufwerke des FileSystemObjects durchlaufen und die Laufwerksbuchstaben mit Hilfe der Eigenschaft DriveLetter ermittelt und an die String-Variable strLaufwerke angeh&auml;ngt.<\/p>\n<p>F&uuml;r das Diskettenlaufwerk h&auml;ngt die Anweisung beispielsweise den Ausdruck ;a;a: an die Zeichenkette strLaufwerke an. Nach dem sp&auml;teren Abschneiden des f&uuml;hrenden Semikolons bliebe also a;a: &uuml;ber.<\/p>\n<p>Die zweimalige Verwendung der Eigenschaft DriveLetter und damit des Laufwerkbuchstabens erfolgt nicht zuf&auml;llig: Der Buchstabe soll einmal unsichtbar als Wert der gebundenen Spalte und einmal als Ausgabewert sichtbar im Kombinationsfeld untergebracht werden. Den Grund f&uuml;r die Verwendung des Laufwerkbuchstabens als Wert der gebundenen Spalte erfahren Sie weiter unten.<\/p>\n<p>Die nachfolgende Anweisung f&uuml;gt zus&auml;tzlich f&uuml;r jedes Laufwerk die Art des Datentr&auml;gers an die Zeichenkette an. Anschlie&szlig;end wird der Inhalt der String-Variablen dem Kombinationsfeld zugewiesen. Damit das gef&uuml;llte Kombinationsfeld beispielsweise wie in Bild 3 aussieht, m&uuml;ssen Sie die erste Spalte, die den gebundenen Wert enth&auml;lt, aus- und die zweite Spalte einblenden. Dazu &auml;ndern Sie die Werte der Eigenschaften Spaltenanzahl auf 2 und Spaltenbreiten auf 0cm;3cm ab.<\/p>\n<p>Nat&uuml;rlich k&ouml;nnen Sie die Anzeige noch ein wenig verfeinern &#8211; z. B. durch die Ausgabe des Datentr&auml;gernamens, des freien und des gesamt verf&uuml;gbaren Speicherplatzes, des Filesystems (NTFS, Fat usw.) und anderer Eigenschaften.<\/p>\n<p>F&uuml;r das Auslesen dieser Eigenschaften ist die Kenntnis des Laufwerktyps erforderlich, da verschiedene Eigenschaften nur f&uuml;r manche Laufwerktypen zur Verf&uuml;gung stehen. So k&ouml;nnen Sie beispielsweise nicht das Filesystem eines Netzlaufwerkes ermitteln. <\/p>\n<p>Tabelle 2 enth&auml;lt eine Auflistung der g&auml;ngigsten Laufwerktypen und deren Konstanten.<\/p>\n<p>Zu jedem Laufwerk gibt es unterschiedliche Arten von Informationen &#8211; f&uuml;r eine lokale Festplatte gibt z. B. die Eigenschaft VolumeName, f&uuml;r ein Netzlaufwerk die Eigenschaft ShareName die Bezeichnung des Laufwerks an.<\/p>\n<pre>Private Sub Form_Load()\r\n    Dim objFSO As Scripting.FileSystemObject\r\n    Dim objLaufwerk As Scripting.Drive\r\n    Dim strLaufwerke As String\r\n    Set objFSO = New FileSystemObject\r\n    On Error Resume Next\r\n    For Each objLaufwerk In objFSO.Drives\r\n        strLaufwerke = strLaufwerke & \";\" & _            objLaufwerk.DriveLetter & \";\" & _            objLaufwerk.DriveLetter & \":\"\r\n        strLaufwerke = strLaufwerke & _\r\n            Choose(objLaufwerk.DriveType + 1, _            \"Unbekannt\", \"Diskettenlaufwerk\", _            \"Lokale Festplatte\", \"Netzlaufwerke\", _            \"CD-Laufwerke u.&auml;.\", \"Ram-Disk\")\r\n    Next\r\n    Me.cboLaufwerke.RowSource = Mid(strLaufwerke, 2, _        Len(strLaufwerke) - 1)\r\n    Me.txtVerzeichnis = \"c:\\\"\r\n    Me.cboLaufwerke.Value = \"c\"\r\n    Me.lstOrdner.SetFocus\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<p><IMG height=\"101\" src=\"..\/fileadmin\/_temp_\/{EA54F8E8-2249-4691-9E46-BB666C85DC3B}\/pic003.png\" width=\"340\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Auswahl eines Laufwerks per Kombinationsfeld<\/span><\/b><\/p>\n<table border=1>\n<tr>\n<td>\n<p><b>Laufwerktyp<\/b><\/p>\n<\/td>\n<td>\n<p><b>Konstante(Wert)<\/b><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Unbekannt<\/p>\n<\/td>\n<td>\n<p>Unknown (0)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Diskettenlaufwerk<\/p>\n<\/td>\n<td>\n<p>Removable (1)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Lokale Festplatte<\/p>\n<\/td>\n<td>\n<p>Fixed (2)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Netzlaufwerk<\/p>\n<\/td>\n<td>\n<p>Remote (3 )<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>CD-Laufwerk u. &auml;.<\/p>\n<\/td>\n<td>\n<p>CDRom (4)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p>Ram-Disk<\/p>\n<\/td>\n<td>\n<p>RamDisk (5)<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p><b>Tab. 2: Laufwerktypen und deren Konstanten<\/b><\/p>\n<p><IMG height=\"185\" src=\"..\/fileadmin\/_temp_\/{EA54F8E8-2249-4691-9E46-BB666C85DC3B}\/pic004.png\" width=\"389\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Anzeige von Laufwerksinformationen<\/span><\/b><\/p>\n<p>Die unterschiedlichen Eigenschaften sollen in daf&uuml;r vorgesehenen Textfeldern dargestellt werden (siehe Bild 4). Da die Zuweisung der Eigenschaften zu den Textfeldern relativ trivial ist, wird sie an dieser Stelle nicht genauer beschrieben.<\/p>\n<p>Ein Laufwerk kann Ordner und\/oder Dateien enthalten. In den Ordnern k&ouml;nnen sich weitere Unterordner und\/oder Dateien befinden. &auml;hnlich wie im Windows Explorer sollen nun zwei Fenster verwendet werden. Das linke Fenster enth&auml;lt alle des im Textfeld txtVerzeichnisse angegebenen Verzeichnisses enthaltene Ordner. Das rechte Fenster soll alle Dateien des im Textfeldes txtVerzeichnisse angegebenen Ordners anzeigen.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Ansicht von Verzeichnissen und Dateien ist eine perfekte Anwendung f&uuml;r das Treeview-Control, das Sie in der vorherigen Ausgabe von Access im Unternehmen kennen gelernt haben. Da allerdings nicht jeder Leser im Besitz dieses Steuerelements ist, finden Sie hier eine L&ouml;sung, die zwar nicht so komfortabel ist, aber keine weiteren Steuerelemente ben&ouml;tigt. <\/p>\n<p><!--30percent--><\/p>\n<p><b> Verzeichnisse anzeigen<\/b><\/p>\n<p>Die Anzeige der Verzeichnisse ist nicht unbedingt trivial, da es unterschiedliche M&ouml;glichkeiten gibt.<\/p>\n<p>Die vom Programmieraufwand her einfachste M&ouml;glichkeit ist das Speichern der Verzeichnisse in einer Tabelle, die dem Listenfeld als Datenherkunft dient und anschlie&szlig;end wieder gel&ouml;scht wird. Der Nachteil ist, dass die Datenbank sich ohne regelm&auml;&szlig;iges Komprimieren schnell vergr&ouml;&szlig;ern wird.<\/p>\n<p>Die zweite M&ouml;glichkeit ist das Speichern der durch Semikola getrennten Verzeichnisse in einer Zeichenkette. Das Listenfeld kann die Zeichenkette als Wertliste anzeigen. Wertlisten sind jedoch auf 2.048 Zeichen beschr&auml;nkt.<\/p>\n<p>Da aber die Anzahl der anzuzeigenden Verzeichnisse und damit auch die Zeichenzahl theoretisch nur durch den Festplattenspeicher begrenzt ist, f&auml;llt diese M&ouml;glichkeit aus.<\/p>\n<p>Die dritte und hier angewendete M&ouml;glichkeit besteht in dem Einlesen der Verzeichnisse in eine tempor&auml;re Datensatzgruppe. Diese erlaubt gleichzeitig die einfache Sortierung der Eintr&auml;ge nach unterschiedlichen Kriterien. Zur &uuml;bertragung der Daten in das Listenfeld verwenden Sie eine Callback-Funktion.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die Funktionsweise und Anwendung von Callback-Funktionen wird detailliert im Beitrag Kombinations- und Listenfelder bev&ouml;lkern der vorliegenden Ausgabe von Access im Unternehmen erl&auml;utert. <\/p>\n<h3>Hinweis<\/h3>\n<p>Tempor&auml;re Datensatzgruppen &#8211; in diesem speziellen Fall ohne Bindung an eine Datenherkunft &#8211; sind mit DAO nicht m&ouml;glich. Daher sollten Sie, falls Sie mit Access 97 arbeiten, die ADO-Bibliothek durch Setzen eines entsprechenden Verweises in die Datenbank einbinden. Wie dies funktioniert, erfahren Sie im Beitrag Verweise auf Bibliotheken setzen, den Sie auf der Heft-CD finden. <\/p>\n<p>Einmal in eine Datensatzgruppe eingelesen, k&ouml;nnen Sie beliebige Sortierungen der Daten durchf&uuml;hren &#8211; z. B. nach dem Alphabet.<\/p>\n<p>Quellcode 2 enth&auml;lt die Funktion VerzeichnisseEinlesen. Interessant ist der Initialisierungsteil der Callback-Funktion. Nach dem Deklarationsteil weist die Funktion der Variablen Pfad zun&auml;chst das aktuell im Textfeld txtVerzeichnis angezeigte Verzeichnis zu und erg&auml;nzt den Wert ggf. um einen Backslash (\\). Anschlie&szlig;end erstellt sie eine tempor&auml;re Datensatzgruppe namens rstVerzeichnisse mit den zwei Feldern ID und Verzeichnisname.<\/p>\n<p>Die Anweisungen innerhalb der nun folgenden For Each-Schleife lesen alle Unterverzeichnisse des in der Variablen Pfad gespeicherten Verzeichnisses in die Datensatzgruppe ein.<\/p>\n<p>Die folgende If Then Else-Abfrage &uuml;berpr&uuml;ft, wie die Prozedur die Daten sortieren soll. Beim ersten Aufruf der Funktion f&uuml;hrt diese eine aufsteigende Sortierung durch.<\/p>\n<p>Nach der Sortierung erfolgt eine Durchnummerierung der Datens&auml;tze im Feld ID. Dies ist deshalb wichtig, weil die Callback-Funktion die Datens&auml;tze sp&auml;ter &uuml;ber die ID ausliest.<\/p>\n<p>Das Einlesen der Datens&auml;tze erfolgt in dem durch die Anweisung Case acLBGetValue eingeleiteten Teil der Funktion. Dieser Teil wird f&uuml;r jeden Datensatz einmal aufgerufen.<\/p>\n<pre>Function VerzeichnisseEinlesen(Feld As Control, ID As Variant, Zeile As Variant, _    Spalte As Variant, Code As Variant) As Variant\r\n    Static rstVerzeichnisse As ADODB.Recordset\r\n    Static i As Integer\r\n    Dim Rueckgabewert As Variant\r\n    Dim Pfad As String\r\n    Dim objFSO As Scripting.FileSystemObject\r\n    Dim objVerzeichnis As Scripting.folder\r\n    Select Case Code\r\n        Case acLBInitialize\r\n            i = 0\r\n            Pfad = Nz(Me.txtVerzeichnis, \"C:\\\") & IIf(Right(Pfad, 1) = \"\\\", \"\", \"\\\")\r\n            Set objFSO = New FileSystemObject\r\n            Set rstVerzeichnisse = New ADODB.Recordset\r\n                With rstVerzeichnisse\r\n                Set .ActiveConnection = Nothing\r\n                    .Fields.Append \"ID\", adInteger, 10, adFldIsNullable\r\n                    .Fields.Append \"Verzeichnisname\", adWChar, 255, adFldIsNullable\r\n                    .Open\r\n                    For Each objVerzeichnis In objFSO.GetFolder(Pfad).SubFolders\r\n                        .AddNew\r\n                        !Verzeichnisname = objVerzeichnis.Name\r\n                        .Update\r\n                    Next objVerzeichnis\r\n                    If IsNull(Me.txtSortierfeld) Then\r\n                        .Sort = \"[Verzeichnisname]\"\r\n                    Else\r\n                        .Sort = \"[\" & Me.txtSortierfeld & \"]\" & Me(\"txtSort\" & _                            Me.txtSortierfeld)\r\n                    End If\r\n                    If Not .EOF Then .MoveFirst\r\n                    Do While Not .EOF\r\n                        i = i + 1\r\n                        !ID = i\r\n                        .Update\r\n                        .MoveNext\r\n                    Loop\r\n                End With\r\n                Rueckgabewert = i\r\n        Case acLBOpen: Rueckgabewert = Timer\r\n        Case acLBGetRowCount: Rueckgabewert = i\r\n        Case acLBGetColumnCount: Rueckgabewert = 1\r\n        Case acLBGetColumnWidth: Rueckgabewert = -1\r\n        Case acLBGetValue\r\n            rstVerzeichnisse.MoveFirst\r\n            rstVerzeichnisse.Filter = \"ID = \" & Zeile + 1\r\n            Rueckgabewert = rstVerzeichnisse!Verzeichnisname\r\n        Case acLBGetFormat\r\n        Case acLBEnd: Set rstVerzeichnisse = Nothing\r\n    End Select\r\n    VerzeichnisseEinlesen = Rueckgabewert\r\nEnd Function<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<p>Die Funktion filtert zun&auml;chst die Datensatzgruppe nach der aktuellen ID und f&uuml;gt dem Listenfeld anschlie&szlig;end den Namen des entsprechenden Verzeichnisses hinzu.<\/p>\n<p><IMG height=\"155\" src=\"..\/fileadmin\/_temp_\/{EA54F8E8-2249-4691-9E46-BB666C85DC3B}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Anzeige von Verzeichnissen und Dateien<\/span><\/b><\/p>\n<p>Damit die Funktion ihren Dienst tut und das entsprechende Listenfeld mit den Daten f&uuml;llt, m&uuml;ssen Sie den Funktionsnamen f&uuml;r die Eigenschaft Herkunftsart eintragen. Anschlie&szlig;end sollte die Anzeige der Daten z. B. wie in Bild 5 aussehen.<\/p>\n<p><b>Dateien anzeigen<\/b><\/p>\n<p>Das Listenfeld lstDateien soll alle Dateien des im Textfeld txtVerzeichnis angezeigten Verzeichnisses anzeigen.<\/p>\n<p>Auch dieses Listenfeld hat eine Callback-Funktion als Datenherkunft. Die Funktion hei&szlig;t DateienEinlesen und ist fast mit der soeben beschriebenen Funktion identisch. Es gibt lediglich die folgenden Unterschiede:<\/p>\n<li>File-Objekt zur Ermittlung von Dateien statt Folder-Objekt zur Ermittlung von Verzeichnissen<\/li>\n<li>Anzeige von vier statt nur zwei Feldern: ID, Dateiname, Gr&ouml;&szlig;e und &auml;nderungsdatum statt nur der ID und dem Verzeichnisnamen<\/li>\n<p>Der Aufbau und die Funktionsweise der Funktion  DateienEinlesen entsprechen weitgehend der Funktion VerzeichnisseEinlesen. Aus Platzgr&uuml;nden wird daher auf eine separate Beschreibung der Funktion verzichtet.<\/p>\n<p>Wie beim Windows-Explorer soll auch der Dateimanager die M&ouml;glichkeit bieten, Dateien und Verzeichnisse zu sortieren. Daher legen Sie zun&auml;chst einige Beschriftungsfelder entsprechend Bild 5 oberhalb der Listenfelder an.<\/p>\n<p>Au&szlig;erdem ben&ouml;tigen Sie die f&uuml;nf versteckten Textfelder txtSortierfeld, txtSortVerzeichnisname, txtSortDateiname, txtSortGroesse, txtSortAenderung.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Warum versteckte Textfelder Kann man statt dessen keine Variablen verwenden Nein, in diesem Fall nicht. Das Sortieren der Daten erfolgt innerhalb einer Callback-Funktion, der man beim Aufruf keine eigenen Variablen &uuml;bergeben kann. Daher werden die f&uuml;r die Sortierung ben&ouml;tigten Informationen in versteckte Textfelder gepackt &#8211; diese k&ouml;nnen anschlie&szlig;end von der Callback-Funktion angesprochen werden. <\/p>\n<p>Das erste Feld enth&auml;lt den Namen der Spalte der beiden Listenfelder, die sortiert werden soll. Die anderen Felder enthalten einen Hinweis auf die aktuelle Sortierung der vier Spalten. Der Wert dieser Felder ist jeweils ASC oder DESC.<\/p>\n<p>Die Sortierung soll durch einen Doppelklick auf die Beschriftungsfelder erfolgen. Dazu legen Sie f&uuml;r die entsprechende Ereigniseigenschaft die Prozedur aus Quellcode 3 an.<\/p>\n<p>Die Prozedur ist prinzipiell f&uuml;r alle vier vorhandenen Spalten gleich. Sie setzt zun&auml;chst einmal den Wert des Textfeldes txtSortierfeld auf den mit der Spalte verbundenen Feldnamen.<\/p>\n<p>Dabei handelt es sich um den Feldnamen, der in der Callback-Funktion verwendet wird. Anschlie&szlig;end &auml;ndert sie den Wert des Textfeldes, das die aktuelle Sortierung speichert, auf den jeweils anderen Wert &#8211; bei ASC auf DESC und umgekehrt.<\/p>\n<p>Mit der letzten Anweisung aktualisiert die Funktion den Inhalt des Listenfeldes. Dadurch wird erneut die Callback-Funktion aufgerufen.<\/p>\n<pre>Private Sub lblVerzeichnisse_DblClick(Cancel As Integer)\r\n    Me.txtSortierfeld = \"Verzeichnisname\"\r\n    Me.txtSortVerzeichnisname = _        IIf(Me.txtSortVerzeichnisname = \"DESC\", \"ASC\", _        \"DESC\")\r\n    Me.lstOrdner.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<pre>Private Sub lstOrdner_DblClick(Cancel As Integer)\r\n    Me.txtVerzeichnis = Me.txtVerzeichnis & _        Me.lstOrdner & \"\\\"\r\n    Me.lstOrdner.Requery\r\n    Me.lstOrdner = Null\r\n    Me.lstDateien.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>Private Sub cmdParent_Click()\r\n    Dim objFSO As Scripting.FileSystemObject\r\n    Dim objFolder As Scripting.folder\r\n    Dim objDrive As Scripting.Drive\r\n    Set objFSO = New Scripting.FileSystemObject\r\n    Set objDrive = objFSO.Drives(Me.cboLaufwerke)\r\n    Set objFolder = objFSO.GetFolder(Me.txtVerzeichnis)\r\n    If Not objFolder.Path = objDrive.RootFolder Then\r\n        Me.txtVerzeichnis = objFolder.ParentFolder & _            IIf(Right(objFolder.ParentFolder, 1) &lt;&gt; _            \"\\\", \"\\\", \"\")\r\n        Me.lstOrdner.Requery\r\n        Me.lstDateien.Requery\r\n    Else\r\n        Me.cboLaufwerke.SetFocus\r\n        Me.lstOrdner = Null\r\n        Me.lstDateien.Requery\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<p>Da das Textfeld txtSortierfeld nun nicht mehr leer ist, wird in der If Then-Abfrage die zweite Option durchgef&uuml;hrt. Diese setzt aus dem Inhalt des Feldes txtSortierfeld und dem Feld txtSortVerzeichnis den Parameter f&uuml;r die Sort-Methode zusammen. <\/p>\n<p>Zur Anzeige der Verzeichnisse eines anderen Laufwerkes w&auml;hlen Sie das gew&uuml;nschte Laufwerk mit dem Kombinationsfeld cboLaufwerke aus. Zur Aktualisierung der beiden Listenfelder nach dem Laufwerkwechsel verwenden Sie eine Prozedur, die durch die Ereigniseigenschaft Nach Aktualisierung ausgel&ouml;st wird.<\/p>\n<p>Da die Prozedur prinzipiell die gleiche Funktion hat wie die beim Laden des Formulars ausgef&uuml;hrte Prozedur, soll sie hier nicht weiter besprochen werden.<\/p>\n<p>Die in den beiden Listenfeldern angezeigten Informationen gelten jeweils f&uuml;r das im Textfeld txtVerzeichnis angezeigte Verzeichnis. Um dieses Verzeichnis zu wechseln, gibt es zwei M&ouml;glichkeiten: den Wechsel in das &uuml;bergeordnete oder eines der untergeordneten Verzeichnisse.<\/p>\n<p><b>Wechsel in ein untergeordnetes Verzeichnis<\/b><\/p>\n<p>Der Wechsel in ein untergeordnetes Verzeichnis erfolgt durch einen Doppelklick auf das gew&uuml;nschte Verzeichnis. Dadurch wird die Prozedur aus Quellcode 4 ausgel&ouml;st.<\/p>\n<p>Die Prozedur &auml;ndert einfach den Eintrag des Textfeldes txtVerzeichnis ab, indem sie den aktuellen Eintrag um den Namen des ausgew&auml;hlten Verzeichnisses erweitert. Die folgenden Anweisungen sorgen f&uuml;r die Aktualisierung der beiden Listenfelder.<\/p>\n<pre>Private Sub cmdAusschneiden_Click()\r\n    If Me.lstOrdner &lt;&gt; \"\" Then\r\n        Me.txtTyp = \"Ordner\"\r\n        Me.txtMarkiert = Me.txtVerzeichnis & _           Me.lstOrdner\r\n    ElseIf Me.lstDateien &lt;&gt; \"\" Then\r\n        Me.txtTyp = \"Datei\"\r\n        Me.txtMarkiert = Me.txtVerzeichnis & _            Me.lstOrdner & Me.lstDateien\r\n    Else\r\n        MsgBox \"Keine Quelle (Ordner\/Datei) ausgew&auml;hlt.\"\r\n        Exit Sub\r\n    End If\r\n    Me.txtAktion = \"Ausschneiden\"\r\nEnd Sub<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p><b>Wechsel in das &uuml;bergeordneteVerzeichnis<\/b><\/p>\n<p>F&uuml;r den Wechsel in das &uuml;bergeordnete Verzeichnis steht eine Schaltfl&auml;che namens cmdParent zur Verf&uuml;gung. Mit einem Mausklick auf die Schaltfl&auml;che l&ouml;sen Sie die Prozedur aus Quellcode 5 aus.<\/p>\n<p>Die Prozedur beginnt mit der Deklaration der drei Objektvariablen f&uuml;r die Objekte FileSystemObject, Drive und Folder. Das Drive-Objekt erh&auml;lt einen Verweis auf das im Kombinationsfeld cboLaufwerke ausgew&auml;hlte Laufwerk. Das Folder-Objekt verweist auf das im Textfeld txtVerzeichnisse angegebene Verzeichnis.<\/p>\n<p>In einer If Then-Abfrage &uuml;berpr&uuml;ft die Prozedur, ob das aktuelle Verzeichnis nicht das Stammverzeichnis des aktuellen Laufwerks ist. In dem Fall ist nat&uuml;rlich kein &uuml;bergeordnetes Verzeichnis mehr vorhanden.<\/p>\n<p>Anderenfalls ermittelt die Funktion &uuml;ber die Eigenschaft ParentFolder den &uuml;bergeordneten Ordner, weist dem Textfeld txtVerzeichnis dessen Namen zu und aktualisiert die Inhalte der Listenfelder.<\/p>\n<p>F&uuml;r das Kopieren, Ausschneiden und Einf&uuml;gen sind insgesamt drei Schaltfl&auml;chen vorgesehen.<\/p>\n<p>Die erste Schaltfl&auml;che dient zur Auswahl des aktuell markierten Ordners oder der aktuell markierten Datei als zu kopierendes Objekt. Die zweite Schaltfl&auml;che f&uuml;hrt das Gleiche f&uuml;r auszuschneidende Objekte durch. Die dritte Schaltfl&auml;che schlie&szlig;lich f&uuml;hrt die Kopier- oder Ausschneide-Aktion aus und f&uuml;gt die Datei in das aktuell ausgew&auml;hlte Verzeichnis ein.<\/p>\n<p>Da das Markieren der zu kopierenden oder auszuschneidenden Objekte und die eigentliche Operation nicht unmittelbar aufeinander folgen, m&uuml;ssen einige Informationen entweder in globalen Variablen oder &#8211; wie bereits weiter oben praktiziert &#8211; in Textfeldern untergebracht werden.<\/p>\n<p>Dazu verwenden Sie die versteckten Textfelder txtMarkiert, txtAktion und txtTyp. Das Textfeld txtMarkiert speichert das betroffene Objekt, also die Datei oder das Verzeichnis, mit komplettem Pfad. Das Textfeld txtAktion speichert die durchzuf&uuml;hrende Aktion, also Kopieren oder Ausschneiden. Das Textfeld txtTyp speichert den Typ des Objekts, also Datei oder Ordner.<\/p>\n<p><b>Dateien zum Verschiebenmarkieren<\/b><\/p>\n<p>Ein Mausklick auf die Schaltfl&auml;che cmdAusschneiden l&ouml;st die Prozedur aus Quellcode 6 aus. Die Prozedur &uuml;berpr&uuml;ft zun&auml;chst, ob ein Ordner markiert ist. Falls ja, schreibt sie seinen Namen in das Textfeld txtMarkiert und tr&auml;gt den Wert Ordner in das Textfeld txtTyp ein. Anderenfalls &uuml;berpr&uuml;ft die Prozedur, ob eine Datei markiert ist, und f&uuml;hrt ggf. die entsprechenden Anweisungen aus. Ist weder ein Ordner noch eine Datei markiert, erscheint eine entsprechende Meldung und die Prozedur wird beendet.<\/p>\n<pre>Private Sub cmdEinfuegen_Click()\r\n    FileOperation Me.txtMarkiert, Me.txtTyp, Me.txtAktion\r\n    Me.lstOrdner.Requery\r\n    Me.lstDateien.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<pre>Private Sub cmdLoeschen_Click()\r\n    Dim Quelle As String\r\n    If Not IsNull(Me.lstOrdner) Then\r\n        Quelle = Me.txtVerzeichnis & Me.lstOrdner\r\n        FileOperation Quelle, \"Ordner\", \"Loeschen\"\r\n    ElseIf Not IsNull(Me.lstDateien) Then\r\n        Quelle = Me.txtVerzeichnis & Me.lstOrdner & Me.lstDateien\r\n        FileOperation Quelle, \"Datei\", \"Loeschen\"\r\n    Else\r\n        MsgBox \"Keine Quelle (Ordner\/Datei) ausgew&auml;hlt.\"\r\n        Exit Sub\r\n    End If\r\n    Me.lstOrdner.Requery\r\n    Me.lstDateien.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<p>In den beiden ersten F&auml;llen wird in der letzten Anweisung noch der Wert Ausschneiden in das Textfeld txtAktion geschrieben.<\/p>\n<p><b>Dateien zum Kopieren markieren<\/b><\/p>\n<p>Die Prozedur, die durch einen Mausklick auf die Schaltfl&auml;che btnKopieren ausgel&ouml;st wird, stimmt weitestgehend mit der im vorherigen Abschnitt beschriebenen Prozedur &uuml;berein. Der einzige Unterschied ist, dass in das Textfeld txtAktion der Wert Kopieren eingetragen wird.<\/p>\n<p><b>Ausgew&auml;hlte Dateien kopieren oder verschieben<\/b><\/p>\n<p>Um ausgew&auml;hlte Dateien oder Ordner zu kopieren oder zu verschieben, ist ein Mausklick auf die Schaltfl&auml;che cmdEinfuegen erforderlich. Die dadurch ausgel&ouml;ste Prozedur finden Sie in Quellcode 7. Die Prozedur ruft die Funktion FileOperation auf und aktualisiert anschlie&szlig;end die beiden Listenfelder.<\/p>\n<p><b>Ordner oder Dateien l&ouml;schen<\/b><\/p>\n<p>Das L&ouml;schen von Ordnern oder Dateien erfolgt durch die Markierung des gew&uuml;nschten Objekts und die anschlie&szlig;ende Bet&auml;tigung der Schaltfl&auml;che cmbLoeschen.<\/p>\n<p>Die dadurch ausgel&ouml;ste Prozedur (s. Quellcode 8) ermittelt zun&auml;chst, ob ein Ordner oder eine Datei zum L&ouml;schen markiert wurde. Falls ja, ruft sie die Funktion FileOperation mit den entsprechenden Argumenten auf. Anderenfalls gibt sie eine entsprechende Fehlermeldung aus.<\/p>\n<p>Falls ein Objekt gel&ouml;scht wurde, aktualisiert die Prozedur noch die beiden Listenfelder. <\/p>\n<p><b>Die Funktion FileOperation<\/b><\/p>\n<p>Beim Kopieren, Verschieben oder L&ouml;schen von Ordnern oder Dateien rufen die entsprechenden Prozeduren die Funktion FileOperation (s. Quellcode 9) auf.<\/p>\n<pre>Sub FileOperation(Quelle As String, QuelleTyp As String, Aktion As String)\r\n    Dim objFSO As Scripting.FileSystemObject\r\n    Set objFSO = New Scripting.FileSystemObject\r\n    Select Case Aktion\r\n        Case \"Verschieben\"\r\n            If QuelleTyp = \"Ordner\" Then\r\n                objFSO.MoveFolder Quelle, _                    Me.txtVerzeichnis\r\n            ElseIf QuelleTyp = \"Datei\" Then\r\n                objFSO.MoveFile Quelle, _                    Me.txtVerzeichnis\r\n            End If\r\n        Case \"Kopieren\"\r\n            If QuelleTyp = \"Ordner\" Then\r\n                objFSO.CopyFolder Quelle, _                    Me.txtVerzeichnis\r\n            ElseIf Me.txtTyp = \"Datei\" Then\r\n                objFSO.CopyFile Quelle, _                    Me.txtVerzeichnis\r\n            End If\r\n        Case \"Loeschen\"\r\n            If QuelleTyp = \"Ordner\" Then\r\n                objFSO.DeleteFolder Quelle\r\n            ElseIf QuelleTyp = \"Datei\" Then\r\n                objFSO.DeleteFile Quelle\r\n            End If\r\n    End Select\r\nEnd Sub<\/pre>\n<p><b>Quellcode 9<\/b><\/p>\n<pre>Private Sub cmdNeuerOrdner_Click()\r\n    Dim Ordnername As String\r\n    Dim objFSO As Scripting.FileSystemObject\r\n    Set objFSO = New Scripting.FileSystemObject\r\n    Ordnername = InputBox(\"Geben Sie den Ordnernamen\" _        & \" ein:\", \"Neuer Ordner\")\r\n    If Ordnername = \"\" Then\r\n        Exit Sub\r\n    End If\r\n    objFSO.CreateFolder Me.txtVerzeichnis & Ordnername\r\n    Me.lstOrdner.Requery\r\nEnd Sub<\/pre>\n<p><b>Quellcode 10<\/b><\/p>\n<p>Die Funktion hat drei Parameter: Quelle, QuelleTyp und Aktion. Der Parameter Quelle enth&auml;lt den kompletten Pfad des Ordners oder der Datei, an der die Operation durchgef&uuml;hrt wird. Der Parameter Quelletyp enth&auml;lt einen der Werte Ordner oder Datei. Der Parameter Aktion enth&auml;lt schlie&szlig;lich einen Wert, der die auszuf&uuml;hrende Aktion beschreibt: Kopieren, Verschieben oder Loeschen.<\/p>\n<p>Die Funktion wertet die Parameter aus und f&uuml;hrt die entsprechenden Aktionen durch. Dazu verwendet sie sechs unterschiedliche Methoden des FileSystemObjects.<\/p>\n<p>Zum Verschieben eines Objektes verwendet die Funktion die Methoden MoveFolder oder MoveFile &#8211; je nach Objekttyp.<\/p>\n<p>Beim Kopieren treten die Methoden CopyFolder oder CopyFile in Aktion. Schlie&szlig;lich verwendet die Funktion die Methoden DeleteFolder oder DeleteFile zum L&ouml;schen eines Ordners oder einer Datenbank. <\/p>\n<p><b>Neuen Ordner erstellen<\/b><\/p>\n<p>Um die wichtigen Funktionen eines Dateimanagers zu komplettieren, fehlt noch das Erstellen eines Ordners. Dazu dient die Prozedur aus Quellcode 10, die beim Anklicken der Schaltfl&auml;che cmdNeuerOrdner ausgel&ouml;st wird.<\/p>\n<p>Die Prozedur verwendet eine Input-Box zur Abfrage des neuen Ordnernamens.<\/p>\n<p>Wenn der Benutzer einen Ordnernamen eingegeben hat, legt die Prozedur mit der CreateFolder-Methode den neuen Ordner an.<\/p>\n<p>Der Ordnername setzt sich aus dem im Textfeld txtVerzeichnis angegebenen Verzeichnis und dem angegebenen Ordnernamen zusammen.<\/p>\n<p><IMG height=\"429\" src=\"..\/fileadmin\/_temp_\/{EA54F8E8-2249-4691-9E46-BB666C85DC3B}\/pic006.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Der fertige Dateimanager<\/span><\/b><\/p>\n<pre>Private Sub lstOrdner_GotFocus()\r\n    Me.lstDateien = Null\r\nEnd Sub<\/pre>\n<p><b>Quellcode 11<\/b><\/p>\n<pre>Private Sub lstDateien_GotFocus()\r\n    Me.lstOrdner = Null\r\nEnd Sub<\/pre>\n<p><b>Quellcode 12<\/b><\/p>\n<p>Die beiden Listenfelder k&ouml;nnen jeweils einen markierten Eintrag enthalten. Einige der hier vorgestellten Prozeduren fragen den Inhalt der Listenfelder ab, um das zu verarbeitende Objekt zu ermitteln.<\/p>\n<p>Da ist es unter Umst&auml;nden ung&uuml;nstig, wenn in beiden Listenfeldern jeweils ein Eintrag markiert ist. Daher soll jedes Mal, wenn ein Eintrag in einem der beiden Listenfelder markiert wird, der eventuell markierte Eintrag im jeweils anderen Listenfeld deaktiviert werden.<\/p>\n<p>Dazu legen Sie jeweils eine Prozedur f&uuml;r die Ereigniseigenschaft Bei Fokuserhalt an (s. Quellcode 11 und Quellcode 12). Das fertige Formular sieht wie in Bild 6 aus.<\/p>\n<p>Das &ouml;ffnen von Dokumente erfolgt durch einen Doppelklick auf das gew&uuml;nschte Dokument. Eine hier nicht n&auml;her erl&auml;uterte Funktion ermittelt die entsprechende Anwendung und &ouml;ffnet die Datei.<\/p>\n<p>Anhand des konkreten Beispiels eines Dateimanagers haben Sie einige Objekte, Methoden und Eigenschaften des FileSystemObjects kennen gelernt.<\/p>\n<p>Zus&auml;tzlich haben Sie nun einen kompakten, in einem Formular untergebrachten Dateimanager, den Sie bequem in Ihre eigenen Datenbanken integrieren k&ouml;nnen.<\/p>\n<p>Sie m&uuml;ssen lediglich die Verweise auf die beiden Bibliotheken Microsoft Scripting Runtime und Microsoft ActiveX Data Objects 2.5 setzen und diese ggf. von den Internetseiten von Microsoft downloaden.<\/p>\n<p>Das FileSystemObject bietet jedoch noch mehr M&ouml;glichkeiten: Sie k&ouml;nnen z. B. Verzeichnisse von CDs auslesen und diese f&uuml;r den Ausdruck eines CD-Covers aufbereiten oder einfach den Inhalt einer Daten-CD f&uuml;r Archivzwecke ausdrucken.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>Dateimanager00.mdb<\/p>\n<p>Dateimanager97.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/724013B9-5595-44FE-A51D-51248662F6AE\/aiu_77.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bei vielen Anwendungen ist es notwendig, Dateien oder Verzeichnisse auszuw&auml;hlen und auf diese zuzugreifen. Das FileSystemObject der Scripting-Laufzeitbibliothek bietet eine Reihe von Methoden und Eigenschaften an, die praktisch jeden Zugriff auf das Filesystem von Windows erlauben. Im vorliegenden Beitrag lernen Sie einige interessante Beispiele f&uuml;r den Einsatz des FileSystemObjects in Zusammenarbeit mit Access kennen. Dazu basteln Sie sich einen keleinen Windows-Dateimanager in Form eines Access-Formulars, mit dem Sie bequem aus Ihrer Datenbankanwendung heraus kleinere Operationen wie zum Beispiel das &Ouml;ffnen, Kopieren, Verschieben oder L&ouml;schen von Dateien und Verzeichnissen ausf&uuml;hren k&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662002,66042002,44000026,44000027],"tags":[],"class_list":["post-55000077","post","type-post","status-publish","format-standard","hentry","category-662002","category-66042002","category-Interaktiv","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Dateien verwalten mit Access - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dateien verwalten mit Access\" \/>\n<meta property=\"og:description\" content=\"Bei vielen Anwendungen ist es notwendig, Dateien oder Verzeichnisse auszuw&auml;hlen und auf diese zuzugreifen. Das FileSystemObject der Scripting-Laufzeitbibliothek bietet eine Reihe von Methoden und Eigenschaften an, die praktisch jeden Zugriff auf das Filesystem von Windows erlauben. Im vorliegenden Beitrag lernen Sie einige interessante Beispiele f&uuml;r den Einsatz des FileSystemObjects in Zusammenarbeit mit Access kennen. Dazu basteln Sie sich einen keleinen Windows-Dateimanager in Form eines Access-Formulars, mit dem Sie bequem aus Ihrer Datenbankanwendung heraus kleinere Operationen wie zum Beispiel das &Ouml;ffnen, Kopieren, Verschieben oder L&ouml;schen von Dateien und Verzeichnissen ausf&uuml;hren k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-18T13:34:25+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"21\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Dateien verwalten mit Access\",\"datePublished\":\"2020-10-18T13:34:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/\"},\"wordCount\":3647,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/6ce451e0eefd4667bfbb67a80fd563ea\",\"articleSection\":[\"2002\",\"4\\\/2002\",\"Interaktiv\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/\",\"name\":\"Dateien verwalten mit Access - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/6ce451e0eefd4667bfbb67a80fd563ea\",\"datePublished\":\"2020-10-18T13:34:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/6ce451e0eefd4667bfbb67a80fd563ea\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/6ce451e0eefd4667bfbb67a80fd563ea\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_verwalten_mit_Access\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dateien verwalten mit Access\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dateien verwalten mit Access - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/","og_locale":"de_DE","og_type":"article","og_title":"Dateien verwalten mit Access","og_description":"Bei vielen Anwendungen ist es notwendig, Dateien oder Verzeichnisse auszuw&auml;hlen und auf diese zuzugreifen. Das FileSystemObject der Scripting-Laufzeitbibliothek bietet eine Reihe von Methoden und Eigenschaften an, die praktisch jeden Zugriff auf das Filesystem von Windows erlauben. Im vorliegenden Beitrag lernen Sie einige interessante Beispiele f&uuml;r den Einsatz des FileSystemObjects in Zusammenarbeit mit Access kennen. Dazu basteln Sie sich einen keleinen Windows-Dateimanager in Form eines Access-Formulars, mit dem Sie bequem aus Ihrer Datenbankanwendung heraus kleinere Operationen wie zum Beispiel das &Ouml;ffnen, Kopieren, Verschieben oder L&ouml;schen von Dateien und Verzeichnissen ausf&uuml;hren k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-10-18T13:34:25+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Dateien verwalten mit Access","datePublished":"2020-10-18T13:34:25+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/"},"wordCount":3647,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea","articleSection":["2002","4\/2002","Interaktiv","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/","url":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/","name":"Dateien verwalten mit Access - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea","datePublished":"2020-10-18T13:34:25+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/6ce451e0eefd4667bfbb67a80fd563ea"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Dateien_verwalten_mit_Access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Dateien verwalten mit Access"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000077"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000077\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}