Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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
GELÖST

Excel VBA CreateObject("Scripting.FileSystemObject") auf Netzlaufwerk dauert ewig

Frage Microsoft Microsoft Office

Mitglied: Meierjo

Meierjo (Level 2) - Jetzt verbinden

17.10.2014, aktualisiert 20.10.2014, 3599 Aufrufe, 5 Kommentare

Hallo zusammen

Habe ein Excel-Makro, welches auf einem Netzlaufwerk ein Verzeichnis und ein Unterverzeichnis nach dem Vorhanden sein einer Txt-Datei durchsucht.
Je nachdem, ob die Datei vorhanden ist oder nicht, verzweigt das Makro.

Liegt das zu durchsuchende Verzeichnis lokal auf dem PC, läuft das Makro gewohnt schnell ( ~ 3000 Dateien im Verzeichnis und nochmals ca ~ 4000 Dateien im Unterverzeichnis). Das Makro ist mit dem Durchsuchen innerhalb ca 2 Sec fertig.

Liegen aber nun Verzeichnis und Unterverzeichnis auf einem Netzlaufwerk, dauert die Laufzeit des Makros ca 30 Sec, also um ein vielfaches länger.


Hier ein Ausschnitt aus dem Code

01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
        Set objdir = objFSO.getfolder(Pfad) 
03.
        dirInfo objdir, Datei, True 'inkl. Unterordner
Hier die Funktion, die aufgerufen wird

01.
Public Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _ 
02.
    Optional ByVal blnTMP As Boolean = False) 
03.
    Dim varTMP As Variant 
04.
    For Each varTMP In objCurrentDir.Files 
05.
        If varTMP.Name Like strName Then 
06.
            If varTMP.Name <> ActiveWorkbook.Name Then 
07.
                If Left(varTMP.Name, 1) <> "~" Then 
08.
                    TempPfad = varTMP.ParentFolder.Path 
09.
                    ' Hier jetzt der Code um mit der Datei etwas zu machen 
10.
                    ' z. B. Öffnen, etwas auslesen oder was auch immer... 
11.
                    If ActiveWorkbook.Name = ODatei Then 
12.
                        ReDim Preserve Strlist(0 To 1, lngCount) 
13.
                        Strlist(0, lngCount) = varTMP.Name 
14.
                        Strlist(1, lngCount) = varTMP.Path 
15.
                        lngCount = lngCount + 1 
16.
                    End If 
17.
                    Exit For 
18.
                End If 
19.
            End If 
20.
        End If 
21.
    Next varTMP 
22.
    If blnTMP = True Then 
23.
        For Each varTMP In objCurrentDir.SubFolders 
24.
            dirInfo varTMP, strName, blnTMP 
25.
        Next varTMP 
26.
    End If 
27.
End Sub

Was kann ich tun, damit das schneller läuft??

- SBS 2011 Domäne, Client Win7, 64 Bit, Office 2010
- Netzwerkperformance sollte auch gut sein, das Kopieren einer ~ 4GB grossen Datei läuft mit > 100'000 kBytes/Sec
- Virenscanner habe ich auf dem Server und auf dem Client deaktiviert, keine Aenderung

Danke und Gruss Urs
Mitglied: colinardo
LÖSUNG 17.10.2014, aktualisiert 20.10.2014
Hallo Urs,
das Problem hast nicht nur du:
http://www.mrexcel.com/forum/excel-questions/656026-better-way-listing- ...
Probier es mal mit der Dir() Variante auf der zweiten Seite des Threads ganz am Ende.

Grüße Uwe
Bitte warten ..
Mitglied: Meierjo
17.10.2014 um 17:45 Uhr
Hallo Uwe

Herzlichen Dank dir Excel-Spezi

Werde die verschiedenen Varianten mal durchprobieren.

Danke und schönes Weekend

Gruss Urs
Bitte warten ..
Mitglied: Meierjo
20.10.2014 um 06:47 Uhr
Guten morgen, Uwe

Habe mir die Excel Tabelle mal heruntergeladen, und heute morgen bei der Arbeit ausprobiert:

Lokal
Files listed: 6'908 ET: 0:00:02 Files/s: 6282 Directories queued: 0

Netzwerk
Files listed: 6'907 ET: 0:00:15 Files/s: 454 Directories queued: 0

Ist das wirklich normal, dass es im Netzwerk soviel länger dauert?
Kannst du das zb bei dir mal nachprüfen?

Gruss
Bitte warten ..
Mitglied: colinardo
LÖSUNG 20.10.2014, aktualisiert um 10:13 Uhr
Moin,
Zitat von Meierjo:
Ist das wirklich normal, dass es im Netzwerk soviel länger dauert?
yip, das Script muss ja jedes File einzeln anfassen, und da gehen nun mal viele kleine Pakete über die Leitung, deren Ack's Zeit kosten.
Kannst du das zb bei dir mal nachprüfen?
Ist hier genauso ...

Wäre gut wenn du die Dateitypen im Vorhinein einschränken würdest - mit der DIR-Funktion hast du ja die Möglichkeit dazu.
Bitte warten ..
Mitglied: Meierjo
20.10.2014 um 10:13 Uhr
Hallo Uwe

Danke für's Feedback. Bin beruhigt, dass es bei dir auch viel länger dauert übers Netz, wie lokal. Dann muss ich wenigstens nicht auf Fehlersuche im Netz gehen

Einschränken geht nicht, da alles TXT-Dateien sind. Werde ich halt den Code umstricken müssen

Danke dir

Gruss Urs
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...