VBA-Code in VB-Code umwandeln

  • #1
L

Lungo

Neues Mitglied
Themenersteller
Dabei seit
16.03.2005
Beiträge
4
Reaktionspunkte
0
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.
 
Thema:

VBA-Code in VB-Code umwandeln

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben