![]() |
|
![]() |
#1 |
![]() MOF User |
![]() Ich sollte per VBA die Dateinamen aus einen Serverpfad auslesen (inkl. Unterverzeichnisse, also rekursiv).
Ich habe herumgesucht, wie man das mit den "normalen" Dateinamen macht (z. B. C:\Windows) habe ich gefunden, aber ich sollte auf ein Verzeichnis in dieser Form zugreifen: \\Servername\Vorlagen gibt es da eine Möglichkeit diese z. B. in eine Exceltabelle auszulisten? __________________ PowerhouseWindows 7 und XP SP3®; Office XP und 2010®; MS Exchange Server®; |
![]() |
![]() ![]() |
![]() |
#2 |
![]() MOF Guru |
![]() __________________ Signatur in jedem Beitragm Forum kann der Beitrag als erledigt markiert werden. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst. Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen. Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus. Betriebssystem: Windows 10 - 64 Bit, Office 2016 - 32 Bit. |
![]() |
![]() ![]() |
![]() |
#3 |
Threadstarter
![]() ![]() MOF User |
![]() Naja, weil der Zugriff von VBA aus auf die Serververzeichnisse auch in Word, Access etc. auch benötigt werden könnte.
Ich habe ja das Auslesen ins Excel nur als Beispiel angeführt. __________________ PowerhouseWindows 7 und XP SP3®; Office XP und 2010®; MS Exchange Server®; |
![]() |
![]() ![]() |
![]() |
#4 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Hajo,
diese Lösung hat mir nicht weitergeholfen. Die Verzeichnisse auslesen kann ich bereits, wenn ich einen Laufwerksbuchstaben habe (z. B. K ![]() Ich habe zum Testen mich damit beholfen, mit dem Subst-Befehl dem Server einen Laufwerksbuchstaben zuzuteilen. Das Problem ist aber, dass ich zwar bei mir weiß welche Netzlaufwerke noch nicht vergeben sind, bei anderen Usern aber nicht. Darum wollte ich wissen, ob es möglich ist, auf Verzeichnisse über den Servernamen zuzugreifen. Danke trotzdem für deine Bemühungen. __________________ PowerhouseWindows 7 und XP SP3®; Office XP und 2010®; MS Exchange Server®; |
![]() |
![]() ![]() |
![]() |
#5 |
![]() Neuer Benutzer |
![]() Hallo,
das "Problem" mit Office und FTP Programme habe ich auch. Aber es ist schnell lösbar. Du kannst bestimmt den Serverpfad in Windows Explorer (Dateimanagement) öffnen. Dort kannst du den Pfad von Adresse-Leiste kopieren und dann in Office angeben. Das Problem habe ich bei Microsoft Office 2010, 2013 gelöst. Ich habe kein Office 2016 oder 365. Dafür weiß ich nicht. Aber soll es theoretisch gleich sein. |
![]() |
![]() ![]() |
![]() |
#6 |
![]() Neuer Benutzer |
![]() Ich habe mal mit einem Notebook Office 2016 getestet. Unser NAS Server ist bei "Durchsuchen" sichtbar.
|
![]() |
![]() ![]() |
![]() |
#7 |
Threadstarter
![]() ![]() MOF User |
![]() Hallo Likunduel,
ich glaube du hast übersehen, dass ich den Servernamen in einem VBA Makro verwenden sollte um den Inhalt eines Verzeichnisses auszulesen bzw. um auf eine Datei in diesem Verzeichnis zuzugreifen. Zum besseren Verständnis habe ich eine Beispieldatei angehängt. Es ist zwar eine Exceldatei, aber das Problem tritt auch bei Word-VBA-Makros auf (darum ist dieser Thread nicht unter Excel eingereiht). Ich kann es zwar über dem Umweg des Subst-Befehls lösen, da ich aber nicht weiß, welche Laufwerksbuchstaben bei anderen Rechnern vergeben sind, ist das nicht die ideale Lösung. __________________ PowerhouseWindows 7 und XP SP3®; Office XP und 2010®; MS Exchange Server®; |
![]() |
![]() ![]() |
![]() |
#8 |
Threadstarter
![]() ![]() MOF User |
![]() Vielleicht hilft eine Neuformulierung meiner Anfrage weiter.
Ich sollte per VBA die Dateinamen aus einen UNC-Pfad auslesen (inkl. Unterverzeichnisse, also rekursiv). __________________ PowerhouseWindows 7 und XP SP3®; Office XP und 2010®; MS Exchange Server®; |
![]() |
![]() ![]() |
![]() |
#9 |
Threadstarter
![]() ![]() MOF User |
![]() Man muss nur wissen, wie man die Frage bzw. den Suchbegriff richtig formuliert!
![]() Mir ist einfach der Begriff UNC-Pfad ums verr.... nicht eingefallen! ![]() Jedenfalls habe ich inzwischen die Lösung gefunden. Ist auch noch aus einem anderen Grund interessant, weil es einen rekursiven Lesezugriff beinhaltet. Hier der Codeschnipsel: Code: Public Sub UNC_Dateien_auslisten(Pfad As String) ' Microsoft Scripting Runtime wird als Verweis benötigt! Dim FSO As FileSystemObject Dim Dirloop As Folder Dim Subfolder As Folder Dim Datei As Variant Dim Zeile As Long On Error GoTo ErrorHandler Set FSO = CreateObject("Scripting.FileSystemObject") Set Dirloop = FSO.GetFolder(Pfad) ' Rekursiver Aufruf der Verzeichnisse For Each Subfolder In Dirloop.Subfolders UNC_Dateien_auslisten (Subfolder.Path) ' rekursiver Aufruf !!!!!!!!! Next Zeile = 2 Do Until IsEmpty(ActiveWorkbook.ActiveSheet.Cells(Zeile, 2)) ' Bereits vergebene Zeile werden übersprungen Zeile = Zeile + 1 Loop For Each Datei In Dirloop.Files ActiveWorkbook.ActiveSheet.Cells(Zeile, 2) = Mid(Datei, InStrRev(Datei, "") + 1) ActiveWorkbook.ActiveSheet.Cells(Zeile, 1) = Replace(Replace(Datei, ActiveWorkbook.ActiveSheet.Cells(Zeile, 2), ""), "Y:", Pfad) Zeile = Zeile + 1 Next Exit Sub ErrorHandler: Select Case Err.Number Case Else If MsgBox(Err.Number & " / " & Err.Description & Chr(13) & Chr(10) & "Trotzdem fortsetzen?", 276, "Fehler") = vbYes Then ' Resume Wiederaufnahme Resume Next Else Exit Sub End If End Select Resume End Sub __________________ PowerhouseWindows 7 und XP SP3®; Office XP und 2010®; MS Exchange Server®; |
![]() |
![]() ![]() |