Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speicherordner im Netzwerk finden

Speicherordner im Netzwerk finden
Lenni
Moin Excellianer!
Ich speicher in einem Netzwerk eine Excel-Datei mit einem Makro und einem vordefinierten Pfad ab.
.Export Filename:="U:\Planungen\Plaene\" & "Plan" & Range("A1") & Range("A2") & ".xls"
So weit so gut... ...wenn sich da nicht manchesmal der Pfad in dem Netzwerk ändern würde... Ein Erklärung, warum das so ist, würde den Rahmen dieses Forums sprengen.
So müßte ich in meinen Code und diesen ändern zu:
.Export Filename:="U:\GruppeB\GruppeB\Planungen\Plaene\" & "Plan" & Range("A1") & Range("A2") & ".xls"
Aber am nächsten Tag ist es wieder der andere Pfad... ...und wieder bekomme ich eine Fehlermeldung...
Gibt es eine Möglichkeit, dass Excel zumindestens immer den Ordner "Plaene" auf "U" findet und dann dort speichert?
Danke für Eure Hilfe!
Gruß
Lenni

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Evtl. per UNC-Name speichern
23.08.2011 17:34:52
NoNet
Hallo Lenni,
ich gehe mal davon aus, dass die Dateien nicht tatsächlich verschoben werden, sondenr dass sich lediglich das Laufwerksmapping ändert !?!
D.h. : An einem Tag ist das Laufwerk U: z.B. auf den UNC-Namen \\Server\Ordner gemappt, so dass der Speicherpfad U:\GruppeB\GruppeB\Planungen\Plaene heisst, am andern Tag (oder anderen PC ?) ist Laufwerk U: bereits als \\Server\Ordner\GruppeB\GruppeB gemappt, so dass der Speicherpfad nur noch U:\Planungen\Plaene heisst, oder ?
In beiden Fällen ist der tatsächliche Speicherpfad das Verzeichnis \\Server\Ordner\GruppeB\GruppeB\Planungen\Plaene
Genau diesen UNC-Namen könntest Du per VBA ermitteln und die Datei dann darin speichern.
Hier ein Codebeispiel zum Ermitteln des UNC-Namens des Laufwerks U:
https://www.herber.de/forum/archiv/752to756/t754940.htm#754956
Mit diesem Code kannst Du ermitteln, wie das aktuelle Mapping für ein bestimmtes Laufwerk heisst.
MsgBox GetUNCPath("U:")
Führe den Code einmalig aus und speichere dann nicht auf U:\... sondern direkt auf dem UNC-Pfad :
.Export Filename:= "\\SERVER\ORDNER\GRUPPEB\GRUPPEB\Planungen\Plaene\" & "Plan" & Range("A1") & Range("A2") & ".xls"
Gruß, NoNet
Exceltreffen 28.-30.10.2011 in Chemnitz
Ein Treffen für alle Excel-Freunde und Besucher deutschsprachiger Excel-Foren.
Alle Infos - Programm - Anmeldung - Teilnehmerliste etc. gibt es auf
http://www.exceltreffen.de/index.php?page=211
Wir freuen uns auf euch...

Anzeige
AW: Evtl. per UNC-Name speichern
23.08.2011 20:28:09
Lenni
Danke NoNet!
Vom Grundsatz her verstehe ich diesen Ansatz und so langsam begreife ich, was da in diesem Netzwerk los ist. Mein Gefühl sagt mir, dass Deine Gedanken ein Volltreffer sind.
Ich bin mir nicht ganz sicher, da ich gerade keinen Rechner aus diesem Netzwerk vor mir habe. Kann ich nicht die benötigten Daten/Namen im normalen Explorer unter den Netzwerkeinträgen auslesen... ? ...auf alle Fälle steht da so einiges.
Also schauen/testen kann ich es erst morgen oder die nächsten Tage. Darf ich Dich dennoch bitten, mein Verständnis ein wenig zu erweitern (wenn das schauen nix bringt):
Also ich mache mir eine Excel-Datei und kopiere mir den Code von Matthias (Dein Link, NoNet) in ein Modul und starte ihn einmal. Dann wird mir der der UNC-Pfad ausgegeben... ...oder?! Ich sehe nur nicht wie er mir ausgegeben wird.
Muss ich da Deinen Vorschlag MsgBox GetUNCPath("U:") irgendwie mit einbauen?!? ...das er mir über eine MsgBox ausgegeben wird?! Wenn ja, hinter/unter welcher Zeile sollte ich diesen Code setzen?
Wie ich dann meinen "Pfad" umschreibe verstehe ich dank Deiner Ausführungen.
Nochmals vielen Dank!
Gruß
Lenni
Anzeige
AW: Evtl. per UNC-Name speichern
24.08.2011 16:49:16
Lenni
Moin nochmals NoNet!
Ich habe versucht Deine Hinweise vor Ort umzusetzen. Leider bin ich zu keinen Ergebnissen gekommen.
Mit dem normalen Explorer konnte ich nix in Erfahrung bringen. Da steht zwar einiges, aber der Server-Name ist da nicht ersichtlich. Mir war auch halt nur so....
Wie muss ich denn den Code von Matthias (https://www.herber.de/forum/archiv/752to756/t754940.htm#754956) und/oder Deinen Vorschlag "MsgBox GetUNCPath("U:")" genau anwenden?! Ich sitze morgen wieder "vor dem" Netzwerk.
Danke nochmals!
Gruß
Lenni
Lösung gefunden! ...aber...
25.08.2011 16:52:43
Lenni
Mit ein wenig nachdenken und einigen anderen Hinweisen (Freund Googel) bin ich weiter gekommen. Ich kann aber nicht mehr Quelle nachvollziehen, da ich da so einiges ausprobiert habe. Mit folgendem Code konnte ich den Server-Namen auslesen:
Option Explicit
Private Declare Function WNetGetConnection _
Lib "mpr.dll" Alias "WNetGetConnectionA" ( _
ByVal lpszLocalName As String, _
ByVal lpszRemoteName As String, _
cbRemoteName As Long _
) As Long
Private Declare Function GetDriveType _
Lib "kernel32" Alias "GetDriveTypeA" ( _
ByVal nDrive As String _
) As Long
Private Declare Function GetLogicalDrives _
Lib "kernel32" () As Long
Private Const DRIVE_REMOTE = 4
Private Sub test()
MsgBox GetDriveFromUNC("U:\")  'Hier anpassen. Bei mir war es "U:\"
End Sub
Private Function GetDriveFromUNC(strUNCDrive As String)
Dim i As Long
Dim lngLW As Long
Dim strUNC As String
Dim strLW As String
Dim dummy As Long
lngLW = GetLogicalDrives()
For i = 97 To 123
If lngLW And 2 ^ (i - 97) Then
strLW = Chr(i) & ":"
If GetDriveType(strLW) = DRIVE_REMOTE Then
strUNC = String(1001, 0)
WNetGetConnection strLW, strUNC, 1000
strUNC = Left(strUNC, InStr(1, strUNC, Chr(0)) - 1)
If InStr(LCase(strUNC), LCase(strUNCDrive)) = 1 Then
GetDriveFromUNC = Chr(i)
Exit Function
End If
End If
End If
Next
End Function
Es popte eine Excel-MsgBox auf und da stand der Name!
...nun habe ich den Server-Namen und meinen Speicherpfad angepaßt. ABER: Mal klappt das speichern, mal klappt es nicht (mit Fehlermeldungen). Da gibt es evtl. ein Zeit-Problem...
Ich schau mal weiter. Ich wollte Euch nur diese Lösung vorstellen und wenn jemand vor einem ähnlichen Problem steht, hoffe ich ein wenig geholfen zu haben. Aber die Initial-Hilfe kommt von NoNet!!! Dank Dir nochmals!
Gruß
Lenni
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige