Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 13.05.2010 um 17:58:41 Uhr
Hallo Pogrammierer,
Hmm, diese Anrede klingt ein wenig abwertend irgendwie...
Und auf bastla angewandt sind sowohl "Gramm" wie auch die Vorsilbe vollkommen verfehlt.

Frage Entwicklung VB for Applications

GELÖST

Problem mit VB-Script (Laufzeitfehler 5)

Mitglied: alexander01

alexander01 (Level 1) - Jetzt verbinden

13.05.2010, aktualisiert 17:58 Uhr, 10748 Aufrufe, 3 Kommentare

Hallo Pogrammierer,

ein VB-Script (wohl gängiger Inhalt) bringt mir einen Laufzeitfehler 5 (ungültiger Prozeduraufruf oder ungültiges Argument) in der drittletzten Zeile VerzName = Dir$().

Sinn ist es, mit diesem Script
in Spalte 1 ab der 6. Zeile den Verzeichnisnamen
in Spalte 2 ab der 6. Zeile zeilenweise die Dateinamen des Verzeichnisses aufzulisten
und das für alle bestehenden Verzeichnisse

Script:
01.
Private Sub CommandButton2_Click() 
02.
Dim VerzName, DateiName, VerzPfad, DateiTyp, VerzListe(), DateiListe() As String 
03.
Dim VerzNr, DateiNr, TempListe, Attrib As Integer 
04.
VerzPfad = "C:\Programme\Brother" '(Testverzeichnis) 
05.
DateiTyp = "*.*" 
06.
 
07.
' Liste mit Unterverzeichnissen erstellen 
08.
VerzNr = 0 
09.
VerzName = Dir$(VerzPfad & "\", Attrib Or vbDirectory) 
10.
While VerzName <> vbNullString 
11.
    If (VerzName <> ".") And (VerzName <> "..") Then 
12.
        ' Handelt es sich um ein Verzeichnis? 
13.
        If GetAttr(VerzPfad & "\" & VerzName) And vbDirectory Then 
14.
            VerzNr = VerzNr + 1 
15.
            ReDim Preserve VerzListe(1 To VerzNr) 
16.
            VerzListe(VerzNr) = VerzName 
17.
                                   
18.
            ' Liste mit Dateinamen erstellen 
19.
                If Right$(VerzPfad, 1) = "\" Then 
20.
                    DateiName = Dir$(VerzPfad & DateiTyp, Attrib) 
21.
                Else 
22.
                    DateiName = Dir$(VerzPfad & "\" & DateiTyp, Attrib) 
23.
                End If 
24.
                DateiNr = 0 
25.
                While DateiName <> vbNullString 
26.
                    If (DateiName <> ".") And (DateiName <> "..") Then 
27.
                        DateiNr = DateiNr + 1 
28.
                        ReDim Preserve DateiListe(1 To DateiNr) 
29.
                        DateiListe(DateiNr) = VerzPfad & "\" & DateiName 
30.
                        Worksheets("Check").Cells(VerzNr + DateiNr + 5, 1) = VerzName 
31.
                        Worksheets("Check").Cells(VerzNr + DateiNr + 5, 2) = DateiName 
32.
                    End If 
33.
                    DateiName = Dir$() 
34.
                Wend 
35.
        End If 
36.
    End If 
37.
VerzName = Dir$() ' Nächsten Datei- oder Verzeichnisnamen holen 
38.
Wend 
39.
 
40.
End Sub
Und: wie kann man die Verzeichnisse sortieren? (die Verzeichnisse bestehen nur aus Ziffern)


Ich danke sehr!

Gruß

Alexander

[Edit Biber] Codeformatierung zwangsverordnet. [/Edit]
Mitglied: bastla
13.05.2010 um 14:48 Uhr
Hallo alexander01!

Um zumindest zu erklären, warum das so nicht funktioniert, Zitate aus der VBA-Hilfe:
Wenn keine weiteren übereinstimmenden Dateinamen gefunden werden, gibt die Dir-Funktion eine Null-Zeichenfolge ("") zurück. Wurde einmal eine Null-Zeichenfolge zurückgegeben, müssen Sie bei nachfolgenden Aufrufen wieder das Argument Pfadname angeben, da sonst ein Fehler auftritt.
Wenn Du also die Dateiliste durch hast, müsstest Du dem nächsten "Dir" (das "$" dahinter ist mittlerweile zwar nicht schädlich, aber nicht mehr nötig) wieder einen Pfad übergeben.

Außerdem:
Ein rekursiver Aufruf der Dir-Funktion ist allerdings nicht möglich.
Das Sortieren (wenn es dann etwas zu Sortierendes geben wird) sollte sich unter Verwendung der entsprechenden Tabellenfunktion realisieren lassen.

Grüße
bastla

[Edit] Hallo LotPings! Seit ich den Winterschlaf nun doch hinter mir gelassen habe und nur mehr mit der Frühjahrsmüdigkeit kämpfe, geht's so einigermaßen ... [/Edit]
Bitte warten ..
Mitglied: LotPings
13.05.2010 um 14:52 Uhr
Zitat von alexander01:
ein VB-Script (wohl gängiger Inhalt) bringt mir einen Laufzeitfehler 5 (ungültiger Prozeduraufruf oder ungültiges
Argument) in der drittletzten Zeile VerzName = Dir$().

Sorry das ist kein vbscript, sieht eher nach Excel VBA aus.

Und bevor man sich das näher ansieht,
bitte formatiere deinen Code zur besseren Les-/Referenzier-barkeit unbedingt mit den dafür vorgesehenen Codetags in der Formatierungshilfe

Auch Einrückungen schaden der Lesbarkeit nicht.

Gruß
LotPings

Hallo Bastla, Ich leide wohl noch an der Feiertagsmüdigkeit
Bitte warten ..
Mitglied: bastla
14.05.2010 um 15:19 Uhr
... etwas konkreter (und unter Verwendung einer alternativen Zugriffsmöglichkeit auf das Dateisystem):
01.
Dim R, C, fso 
02.
 
03.
Private Sub CommandButton2_Click()  
04.
Ordner = "C:\Programme\Brother" '(Testverzeichnis) 
05.
R = 5 
06.
C = 3 
07.
 
08.
Set fso = CreateObject("Scripting.FileSystemObject") 
09.
DoFolders fso.GetFolder(Ordner) 
10.
Cells(R, C).CurrentRegion.Sort Key1:=Cells(R, C), Order1:=xlAscending, Header:=xlNo 
11.
MsgBox "Fertig." 
12.
End Sub 
13.
 
14.
Sub DoFolders(Folder) 
15.
For Each File In Folder.Files 
16.
    Cells(R, C) = Folder.Name 
17.
    Cells(R, C + 1) = File.Name 
18.
    R = R + 1 
19.
Next 
20.
For Each SubFolder In Folder.SubFolders 
21.
    DoFolders SubFolder 
22.
Next 
23.
End Sub
Da dieser Ansatz rekursiv arbeitet und daher die gesamte Ordnerstruktur unterhalb des angegebenen Startordners "abgrast", würde sich vielleicht eher
Cells(R, C) = Folder.Path
anbieten - allenfalls auch als relativer Pfad:
Cells(R, C) = Replace(Folder.Path, Ordner & "\", "", , , vbTextCompare)
Grüße
bastla

P.S.: @Biber: Da "Pogrammierer" keinerlei phonetische Ähnlichkeit mit "Scripter" oder "Batcher" aufweist, hatte ich mich ohnehin nicht angesprochen gefühlt ...
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VB-Script in VB-Script starten und Parameter übergeben
gelöst Frage von denkisVB for Applications7 Kommentare

Hallo liebe Scriptgemeinde, ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche ...

Batch & Shell
Probleme bei der Ausführung eines VB-Scriptes
Frage von AuricGoldfingerBatch & Shell1 Kommentar

Hallo zusammen, ich habe folgendes Script geschrieben: Leider bekomme ich bei der Ausführung den Fehler Was mache ich falsch?? ...

Windows Server
Drucker entfernen in VB-Script
gelöst Frage von NilsvLehnWindows Server2 Kommentare

Hallo ich habe eine kleine Frage bzgl. unseres Anmeldeskriptes. Ich habe ein IT-netzwerk an einer Uni übernommen. Ich arbeite ...

Entwicklung
VB Script Drucker hinzufügen
Frage von Marcel1989Entwicklung3 Kommentare

Funktionsweise sollte definitiv sein das mit einem Script sich 2 verschiedene Betriebssysteme ein und denselben Drucker holen. Mein Script ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...