WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 13.08.2010, 11:58   #1
Ger_17
Master
 
Registriert seit: 26.12.2002
Alter: 40
Beiträge: 758


Ger_17 eine Nachricht über ICQ schicken
Standard Excel VBA

Hallo Leute!

Ich hab ein kleines Problem mit diesem Code:

Code:
Sub Schaltfläche6_Klicken()
  Dim i As Integer
  Dim sPfad As String
  Dim fso, Ordnername
  Set fso = CreateObject("Scripting.FileSystemObject")
   'Prüfen ob Ordner 'daten' existiert. Wenn nicht, neu anlegen
  If Len(Dir("c:\Firma", vbDirectory)) = 0 Then MkDir "c:\Firma"
  For i = 3 To 1000
    sPfad = Cells(i, 7).Value & " " & Cells(i, 6).Value
    Ordnername = Cells(i, 7).Value & " " & Cells(i, 6).Value
    If (fso.FolderExists(Ordnername)) = False Then
    MkDir ("c:\Firma\" & sPfad)
    Else
    On Error Resume Next
End If
Next
End Sub
Zuerst soll geprüft werden ob es den Ordner C:\Firma gibt, wenn ja weiter, sonst anlegen und dann soll er prüfen ob die Ordner (Spalte 6 und 7 sind Nachname und Vorname) der jeweiligen Kunden schon angelegt worden sind. Wenn ja weiter, sonst anlegen.

Jetzt gibt es den Ordner schon dennoch springt mit Excel in die Zeile
Code:
MkDir ("c:\Firma\" & sPfad)
ich versteh nicht warum.

Bitte um Unterstützung.
Danke!
Ger_17 ist offline   Mit Zitat antworten
Alt 13.08.2010, 13:15   #2
wbendl
Master
 
Registriert seit: 22.03.2000
Alter: 66
Beiträge: 550


Standard

Hi!

Zuerst solltest du etwas Ordnung in den Code bringen. Dann ist er leichter zu verstehen, und Fehler sind leichter zu erkennen.

Ich würde sagen die Variable Ordnername enthält keinen gültigen Pfad.


mfg

WB
wbendl ist offline   Mit Zitat antworten
Alt 13.08.2010, 13:58   #3
Ger_17
Master
 
Registriert seit: 26.12.2002
Alter: 40
Beiträge: 758


Ger_17 eine Nachricht über ICQ schicken
Standard

danke, ja hat gestimmt ... ein kollege hat mir zeitgleich den Fehler gezeigt

hier ist der richtige code:
Code:
Sub Schaltfläche6_Klicken()
  Dim i As Integer
  Dim sPfad As String
  Dim fso, Ordnername
  Set fso = CreateObject("Scripting.FileSystemObject")
   'Prüfen ob Ordner 'daten' existiert. Wenn nicht, neu anlegen
    If Len(Dir("c:\Firma", vbDirectory)) = 0 Then
        MkDir "C:\Firma"
    Else
    'do nothing
    End If
        For i = 3 To 1000
            sPfad = Cells(i, 7).Value & " " & Cells(i, 6).Value
            Ordnername = Cells(i, 7).Value & " " & Cells(i, 6).Value
                If sPfad = "" Then
                Else
                    If (fso.FolderExists("C:\Firma\" & Ordnername)) = False Then
                        MkDir ("C:\Firma\" & sPfad)
                    Else
                        On Error Resume Next
                    End If
                End If
    Next
    End Sub

*closed*
Ger_17 ist offline   Mit Zitat antworten
Alt 13.08.2010, 16:00   #4
FranzK
Inventar
 
Registriert seit: 23.03.2000
Ort: Graz
Alter: 71
Beiträge: 3.567


Standard

Hi

Na ja, "richtiger Code" ist hier wohl ein wenig übertrieben. Eine erste Verbesserung wäre:

Code:
Public Sub Schaltfläche6_Klicken()

  Dim i As Integer
  Dim RootDir As String
  Dim NewDir As String
  Dim Ordnername As String
  Dim fso

  RootDir = "C:\Firma"
  Set fso = CreateObject("Scripting.FileSystemObject")

  'Prüfen ob Ordner 'daten' existiert. Wenn nicht, neu anlegen
  If Len(Dir(RootDir, vbDirectory)) = 0 Then
    MkDir RootDir
  End If
    
  'Jetzt das Ganze für die Unterordner
  For i = 3 To 1000
    Ordnername = Cells(i, 7).Value & " " & Cells(i, 6).Value
    If Trim$(Ordnername) <> "" Then  
      NewDir = RootDir & "\" & Ordnername
      If (fso.FolderExists(NewDir)) = False Then
        MkDir (NewDir)
      End If
    End If
  Next

End Sub
____________________________________
Ciao
FranzK ist offline   Mit Zitat antworten
Alt 13.08.2010, 16:14   #5
Ger_17
Master
 
Registriert seit: 26.12.2002
Alter: 40
Beiträge: 758


Ger_17 eine Nachricht über ICQ schicken
Standard

@FranzK
Thx ... verstehe zwar nicht alle optimierungen, aber das ist ja nicht so tragisch hauptsache der code funktioniert.

habe ihn für mich angepasst und funzt super.

Ger_17 ist offline   Mit Zitat antworten
Alt 13.08.2010, 16:29   #6
FranzK
Inventar
 
Registriert seit: 23.03.2000
Ort: Graz
Alter: 71
Beiträge: 3.567


Standard

Zitat:
Zitat von Ger_17 Beitrag anzeigen
@FranzK
Thx ... verstehe zwar nicht alle optimierungen, aber das ist ja nicht so tragisch hauptsache der code funktioniert.

habe ihn für mich angepasst und funzt super.
Dir ist aber schon bewusst, dass die Abfrage If sPfad ="" völlig sinnlos ist, da sPfad ja immer zumindest ein Leerzeichen beinhaltet? Dein Ursprünglicher Code sucht bis zu 1000 Mal sinnlos nach einem Verzeichnis und lebt nur von der Toleranz von Windows, dass es sich nicht daran stört, wenn am Ende eines Verzeichnisnamens noch ein insignifikantes Leerzeichen steht...

____________________________________
Ciao
FranzK ist offline   Mit Zitat antworten
Alt 13.08.2010, 17:05   #7
Ger_17
Master
 
Registriert seit: 26.12.2002
Alter: 40
Beiträge: 758


Ger_17 eine Nachricht über ICQ schicken
Standard

stimmt ... klingt logisch

Ger_17 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:01 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag