VBA-Code in VB-Code umwandeln

Dieses Thema VBA-Code in VB-Code umwandeln im Forum "Windows XP Forum" wurde erstellt von Lungo, 18. März 2005.

Thema: VBA-Code in VB-Code umwandeln Hallo, ich habe folgendes Problem. Ich habe verschiedene xls-Dateien in einem Ordner und will aus all diesen...

  1. Hallo,
    ich habe folgendes Problem. Ich habe verschiedene xls-Dateien in einem Ordner und will aus all diesen Dateien den Dateinamen + den jeweiligen Sheetnamen auslesen und in eine Textdatei schreiben. Unter VBA hab ich dies bereits mit folgendem Code zum laufen gebracht:

    Code:
    Sub Alle_Regelnamen(sLang As String, sInputPath As String, sOutputFilename As String)
    
       ->Dim sText As String
    
        hauptdir = sInputPath
        namedatei = sOutputFilename
        
        Open namedatei For Output As #1
        
       ->Loop over all files in directory
        Name = Dir(hauptdir + \*.xls)->Zuordnung der einzelnen xls-Dateien zu Name
        Do While Name <> 
           ->Debug.Print Name
            Workbooks.Open Filename:=hauptdir + \ + Name-> Öffnen der unter Name eingelesenen xls-Datei
            
           -> Loop over all sheets
            nr = Sheets.Count->Zählen der einzelnen Arbeitsblätter
            For i = 1 To nr
                Sheets(i).Select-> Auswahl des jeweiligen Arbeitsblattes
                
               -> Len Funktion gibt Länge der zu beachtenden Zeichen an
                If Not Left(Sheets(i).Name, Len(Tabelle)) = Tabelle Then-> Standardtabellenblätter (Tabelle 1, Taabelle 2) werden nicht beachtet
                    Print #1, Left(Name, Len(Name) - 4) & . & Sheets(i).Name-> .xls wird an den Dateienden abgeschnitten; zu Schreibende Zeile besteht aus Dateiname.Arbeitsblatt
                End If
            Next i
            ActiveWindow.Close SaveChanges:=False-> beim Schließen der Excel Datei soll nicht gespeichert werden
            Name = Dir-> nächste Datei wird Name zugeordnet
        Loop
        Close #1-> Output Datei schließen
        
    End Sub
    
    Nun will ich diese VBA-Routine in eine VB-Routine umwandeln. Da es jedoch einige Unterschiede zwischen den beiden Sprachen gibt, komme ich hierbei an verschiedenen stellen nicht weiter.

    Diese sind:
    - Wie kann ich in VB den jeweiligen Dateinamen der Variablen Name zuweisen, ohne das der gesammte Pfad mit dranhängt? Und wie kann ich dabei die Schleife über alle Dateien die in dem Pfad hauptdir liegen laufen lassen? In VBA werden der Variablen Name ja nacheinander alle Dateien des Ordners mit dem Befehl Name=Dir zugewiesen.

    Ich hoffe das ich mich nicht zu kompliziert ausgedrückt habe  :-[.

    ciao
    Lungo
     
  2. Hi.

    Benutze dafür am besten das FileSystemObject
    Dazu erstmal über ->Projekt -> Verweise Microsoft Scripting Runtime aktivieren um die Objekte dem Projekt zugänglich zu machen.

    Der Beispielcode gibt Dir die Datei-namen und -Endung aller Dateien im Ordner aus. Unterverzeichnisse werden nicht berücksichtigt.
    Code:
    Dim fso As New FileSystemObject
    Private Sub Command1_Click()
      Dim fo As Folder
      Dim fi As File
      
      Set fo = fso.GetFolder(c:\)
      For Each fi In fo.Files
        Debug.Print fi.Name
      Next
      Set fso = Nothing
    End Sub
    
    Edit: Das schreiben der Textdatei solltest Du dann auch mit dem fso erledigen. Das aber vorwiegend aus kosmetischen Gründen.