ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 11.07.2000

Diese Seite wurde zuletzt aktualisiert am 11.07.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Von groß nach klein

Zurück...


Anzeige

(-hg) mailto:hg_convertfilesfolderscase@aboutvb.de

Die MSDN Library - VB NameName-Anweisung ist zwar eigentlich dazu gedacht, eine Datei oder einen Ordner zu verschieben. Sie können Sie aber auch dazu verwenden, den Datei- oder Ordner-Namen in durchgehende Groß- oder Kleinschreibung umzuwandeln.

Name Path As LCase$(Path)

oder

Name Path As UCase$(Path)

Auch wenn dabei der gesamte Pfadname in Groß- oder Kleinbuchstaben umgewandelt wird, ist nur Name der Datei bzw. des Ordners selbst betroffen, und nicht etwa der gesamt darüber liegende Pfad.

Die Schreibweise einer einzelnen Datei oder eines einzelnen Ordners lässt sich so recht einfach ändern. Wenn Sie aber die Namen aller alle Dateien eines Ordners, oder gar aller Dateien und Ordner in einem Ordner samt Unterordnern ändern wollen, ist schon ein wenig mehr Aufwand notwendig. Mit Hilfe des MSDN Library - VB FileSystemObjectFileSystemObjects aus der Microsoft Scripting Runtime (ab Visual Basic 6 verfügbar, oder auf Systemen mit Internet Explorer) hält sich dieser Aufwand jedoch in Grenzen. Mit Hilfe der File- und Folder-Objekte und der Files- und SubFolders-Collections der Scripting Runtime können Sie die Namen aller Ordner und Dateien ab einem bestimmten Pfad umwandeln.

Die Funktion ConvertFilesFoldersCase erledigt dies für Sie, mit einigem Komfort obendrein. Sie übergeben ihr im ersten Parameter einen Datei- oder Ordner-Pfad. Die Funktion unterscheidet selbstständig zwischen beiden Kategorien. Im nächsten, optionalen Parameter legen Sie mit den Konstantwerten vbLowerCase oder vbUpperCase die gewünschte Schreibweise fest (Voreinstellung ist vbLowerCase). Wir verwenden hier die VB-eigenen Konstanten der StrConv-Funktion, da diese Funktion auch innerhalb unserer der Funktion zur Umwandlung verwendet wird. Im optionalen Parameter IncludeSubFolders legen Sie fest, ob auch die Namen unterhalb eines in Path übergebenen Ordners gelegener Ordner und darin enthaltener Dateien umgewandelt werden sollen. In Convert (optional) übergeben Sie einen der Konstantwerte aus der ConvertConstants-Enumeration. Bei cvfFilesOnly werden nur die Namen von Dateien umgewandelt, bei cvfFoldersOnly nur die Namen von Ordnern, und bei cvfAll (Voreinstellung) sowohl als auch. Setzen Sie im letzten optionalen Parameter ExcludeStartFolder den Wert True, wird der Name eines in Path übergebenen Ordners selbst nicht umgewandelt, sondern nur die Namen der darin enthaltenen Dateien und Unterordner, abhängig von der Einstellung im Parameter Convert.

Die Funktion gibt eine Collection zurück, die die Pfad-Namen aller Dateien und Ordner enthält, bei denen die Umwandlung nicht erfolgen konnte. Die Funktion bricht also beim Auftreten eines Fehlers nicht einfach mitten drin ab. Sie können die in der zurückgegebenen Auflistung enthaltenen Pfade anschließend einzeln prüfen, gegebenenfalls auch einzeln noch einmal mit der Name-Funktion umzuwandeln versuchen und einen dabei auftretenden Fehler näher untersuchen.

Public Enum ConvertConstants
  cvfFilesOnly
  cvfFoldersOnly
  cvfAll
End Enum

Public Function ConvertFilesFoldersCase(Path As String, _
 Optional ByVal StrConvert As VbStrConv = vbLowerCase, _
 Optional ByVal IncludeSubFolders As Boolean, _
 Optional ByVal Convert As ConvertConstants = cvfAll, _
 Optional ByVal ExcludeStartFolder As Boolean) As Collection

  Dim nErrs As Collection
  
  Select Case StrConvert
    Case vbUpperCase, vbLowerCase
    Case Else
      Exit Function
  End Select
  Set nErrs = New Collection
  On Error Resume Next
  With New FileSystemObject
    If .FileExists(Path) Then
      With .GetFile(Path)
        Name Path As StrConv(Path, StrConvert)
      End With
      If Err.Number Then
        nErrs.Add Path
      End If
    ElseIf .FolderExists(Path) Then
      zConvertFilesFoldersCase nErrs, .GetFolder(Path), StrConvert, _
       IncludeSubFolders, Convert
    Else
      nErrs.Add Path
    End If
  End With
  Set ConvertFilesFoldersCase = nErrs
End Function

Private Sub zConvertFilesFoldersCase(Errs As Collection, _
 Folder As Folder, ByVal StrConvert As VbStrConv, _
 ByVal IncludeSubFolders As Boolean, _
 ByVal Convert As ConvertConstants, _
 Optional ByVal ExcludeStartFolder As Boolean)

  Dim nFile As File
  Dim nFolder As Folder
  Dim nPath As String
  
  On Error Resume Next
  With Folder
    If Not ExcludeStartFolder Then
      If Convert Then
        nPath = .Path
        Name nPath As StrConv(nPath, StrConvert)
      End If
      If Err.Number Then
        Errs.Add .Path
        Err.Clear
      End If
    End If
    For Each nFile In .Files
      With nFile
        nPath = .Path
        Name nPath As StrConv(nPath, StrConvert)
        If Err.Number Then
          Errs.Add .Path
          Err.Clear
        End If
      End With
    Next
    If IncludeSubFolders Then
      For Each nFolder In .SubFolders
        zConvertFilesFoldersCase Errs, nFolder, _
         StrConvert, True, Convert
      Next
    End If
  End With
End Sub

Vielleicht werden Sie sich fragen, nachdem Sie sich die Funktion näher angesehen haben, warum dort die Name-Anweisung zum Umbenennen verwendet wird. Eigentlich müsste man doch lediglich die Schreibweise der Name-Eigenschaft eines File- oder Folder-Objekts ändern und wieder zuweisen. Ja, eigentlich... es funktioniert aber leider nicht.


Modul modConvertFilesFoldersCase (modConvertFilesFoldersCase.bas - ca. 2,5 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer