Discussion:
netzlaufwerkbuchstabe ermitteln
(zu alt für eine Antwort)
dany-sahne
2005-10-19 08:02:02 UTC
Permalink
hallo ng,

in einem excel makro möchte ich einer laufwerksvariablen den
laufwerksbuchstaben eines bestimmten verbundenen netzlaufwerk zuweisen.

kann ich das mit vba lösen oder geht das nur mit api? mit api kenne ich mich
leider nicht aus. die IP und die Datenträgerbezeichnung sind bekannt.

schon im voraus danke für die antworten.

gruß
dany-sahne
stefan onken
2005-10-19 08:33:48 UTC
Permalink
Hallo,
evtl hilft das weiter:
http://michael-schwimmer.de/vba019.htm

Gruß
stefan
Post by dany-sahne
hallo ng,
in einem excel makro möchte ich einer laufwerksvariablen den
laufwerksbuchstaben eines bestimmten verbundenen netzlaufwerk zuweisen.
kann ich das mit vba lösen oder geht das nur mit api? mit api kenne ich mich
leider nicht aus. die IP und die Datenträgerbezeichnung sind bekannt.
schon im voraus danke für die antworten.
gruß
dany-sahne
dany-sahne
2005-10-19 10:55:03 UTC
Permalink
hallo stefan,

als anfänger habe ich mich wohl etwas unverständliche ausgedrückt.

das laufwerk liegt auf einem anderen server, auf dem sich noch weitere
laufwerke
befinden.

aus diesen laufwerk möchte ich den laufwerksbuchstaben eines bestimmten
laufwerkes mit einer bekannten datenträgerbezeichnung ermitteln.

leider konnte ich mit dem link nichts anfangen.

gruß
danny
Post by stefan onken
Hallo,
http://michael-schwimmer.de/vba019.htm
Gruß
stefan
Post by dany-sahne
hallo ng,
in einem excel makro möchte ich einer laufwerksvariablen den
laufwerksbuchstaben eines bestimmten verbundenen netzlaufwerk zuweisen.
kann ich das mit vba lösen oder geht das nur mit api? mit api kenne ich mich
leider nicht aus. die IP und die Datenträgerbezeichnung sind bekannt.
schon im voraus danke für die antworten.
gruß
dany-sahne
Michael Schwimmer
2005-10-20 09:38:08 UTC
Permalink
Hallo Dany plus Sahne,
Post by dany-sahne
als anfänger habe ich mich wohl etwas unverständliche ausgedrückt.
das laufwerk liegt auf einem anderen server, auf dem sich noch
weitere laufwerke
befinden.
aus diesen laufwerk möchte ich den laufwerksbuchstaben eines
bestimmten laufwerkes mit einer bekannten datenträgerbezeichnung
ermitteln.
Selbst wenn das gehen würde, was in aller Welt willst du mit diesem
Laufwerksbuchstaben anfangen? Wichtig ist AFAIK der Server- und
Freigabename, die kannst du dann in der UNC-Notation (\\server
\freigabename) verwenden, der lokale Laufwerksbuchstabe ist leider nur
Schall und Rauch.

Wenn du den Servernamen kennst, kommst du auch mit dem Dir-Befehl
weiter.

MsgBox Dir("\\Server\Volumes\*", vbVolume or vbDirectory)

Poste doch mal, was du überhaupt erreichen willst, dann kann man dir ja
möglicherweise weiterhelfen.
Post by dany-sahne
kann ich das mit vba lösen oder geht das nur mit api? mit api kenne
Die API ist keine eigene Programmier- oder Scripsprache wie VBA. Die
meisten von der API zur Verfügung gestellten Funktionen oder Prozezuren
können aber von VBA benutzt werden.



MfG
Michael
--
Michael Schwimmer
Home : http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
dany-sahne
2005-10-21 11:30:03 UTC
Permalink
hallo michael,

mein problem ist folgendes:

ich habe ein add-in programmiert. das add-in öffnet passwortgeschützte
excel-dateien, die auf einem laufwerk eines servers liegen.

das add-in möchte ich auf verschiedenen rechnern installieren und verwenden.
das benötigte laufwerk hat auf den verschiedenen rechnern leider einen
unterschiedlichen lokalen laufwerksbuchstaben.

da ich manchmal etwas 'faul' sein möchte und gerne userfreundlich
programmiere kam mir die idee, dass man den benötigen lokalen
Laufwerkbuchstaben auch aus dem makro heraus suchen lassen könnte.


die dir-funktion kannte ich noch nicht. Mit Dir("\\IP-Adresse\Volumes\*",
vbVolume)
bekomme ich leider nur "Share-Disk3" ausgegeben. die bezeichnung finde ich
zwar auch im windows-explorer wieder. leider ist es nicht die benötigte
bezeichnung. ich benötigte folgende bezeichnung aus der explorer-ordnerleiste
""bezeichung" auf "xy" (f:)"

die werbung für dein buch war sehr gut. als hungriger unerfahrener
programmierer habe ich mir's natürlich schon bestellt. ich denke, dass es
mich in manchen dingen auf jeden fall noch weiterbringen wird.

ein schönes wochenende wünscht dir
danny
Post by Michael Schwimmer
Hallo Dany plus Sahne,
Post by dany-sahne
als anfänger habe ich mich wohl etwas unverständliche ausgedrückt.
das laufwerk liegt auf einem anderen server, auf dem sich noch
weitere laufwerke
befinden.
aus diesen laufwerk möchte ich den laufwerksbuchstaben eines
bestimmten laufwerkes mit einer bekannten datenträgerbezeichnung
ermitteln.
Selbst wenn das gehen würde, was in aller Welt willst du mit diesem
Laufwerksbuchstaben anfangen? Wichtig ist AFAIK der Server- und
Freigabename, die kannst du dann in der UNC-Notation (\\server
\freigabename) verwenden, der lokale Laufwerksbuchstabe ist leider nur
Schall und Rauch.
Wenn du den Servernamen kennst, kommst du auch mit dem Dir-Befehl
weiter.
MsgBox Dir("\\Server\Volumes\*", vbVolume or vbDirectory)
Poste doch mal, was du überhaupt erreichen willst, dann kann man dir ja
möglicherweise weiterhelfen.
Post by dany-sahne
kann ich das mit vba lösen oder geht das nur mit api? mit api kenne
Die API ist keine eigene Programmier- oder Scripsprache wie VBA. Die
meisten von der API zur Verfügung gestellten Funktionen oder Prozezuren
können aber von VBA benutzt werden.
MfG
Michael
--
Michael Schwimmer
Home : http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
Michael Schwimmer
2005-10-21 20:12:52 UTC
Permalink
Hallo Danny,
Post by dany-sahne
ich habe ein add-in programmiert. das add-in öffnet
passwortgeschützte excel-dateien, die auf einem laufwerk eines
servers liegen.
das add-in möchte ich auf verschiedenen rechnern installieren und
verwenden. das benötigte laufwerk hat auf den verschiedenen rechnern
leider einen unterschiedlichen lokalen laufwerksbuchstaben.
dann sollte man grundsätzlich den UNC-Pfad
(\\server\freigabename\RestVomPfad\Datei.xls)
benutzen, der ist nämlich eindeutig und somit auf jedem Rechner gleich,
der diesen Server erreichen kann!
Post by dany-sahne
da ich manchmal etwas 'faul' sein möchte und gerne userfreundlich
programmiere kam mir die idee, dass man den benötigen lokalen
Laufwerkbuchstaben auch aus dem makro heraus suchen lassen könnte.
Der lokale Laufwerksbuchstabe ist IMO total unnötig. Selbstverständlich
kann man den aber auch ermitteln, wenn der Servername und der
Freigabename bekannt ist. Ist aber etwas umständlich.

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("\\Patrick\C")
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
Post by dany-sahne
die werbung für dein buch war sehr gut. als hungriger unerfahrener
programmierer habe ich mir's natürlich schon bestellt. ich denke,
dass es mich in manchen dingen auf jeden fall noch weiterbringen
wird.
Freut mich ;-)
Post by dany-sahne
ein schönes wochenende wünscht dir
danny
Dir auch ein schönes WE!

Mfg
Michael
--
Michael Schwimmer
Home : http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
dany-sahne
2005-10-24 13:03:06 UTC
Permalink
hallo michael,

vielen dank für deine unkomplizierte Hilfe. Das Makro läuft. :-)

zum UNC-Pfad habe ich noch eine Frage: kann ich bei "
\\server\freigabename\RestVomPfad\Datei.xls"
"RestvomPfad\Datei.xls" weglassen?

gruß
danny
Michael Schwimmer
2005-10-24 22:11:57 UTC
Permalink
Hallo Danny
Post by dany-sahne
vielen dank für deine unkomplizierte Hilfe. Das Makro läuft. :-)
freut mich.
Post by dany-sahne
zum UNC-Pfad habe ich noch eine Frage: kann ich bei "
\\server\freigabename\RestVomPfad\Datei.xls"
"RestvomPfad\Datei.xls" weglassen?
Jetzt bin ich aber etwas verwirrt. Warum sollte das weggelassen werden?

Aus Wikipedia:
Uniform Naming Convention (UNC) ist weitgehend Standard, wenn man
freigegebene Ressourcen (Ordner, ganze Laufwerke etc.) in einem
Rechnernetz ansprechen möchte. Dadurch kann auf eine Verbindung
unter Zuweisung eines Laufwerksbuchstabens verzichtet werden.

Um also eine Datei anzusprechen (öffnen, kopieren, verschieben, löschen
etc.) kann diese Notation benutzt werden. Der Vorteil ist, dass man den
Laufwerksbuchstaben überhaupt nicht benötigt, dieser muss also nicht
erst umständlich ermittelt werden.

Anstatt beispielsweise "X:\IrgendeineDatei.xls" auf einem speziellen
Rechner zu öffnen, kannst du die Notation "\\server\freigabename
\IrgendeineDatei.xls" benutzen, um auf allen Rechnern des Netzwerks (je
nach Berechtigung) auf diese Datei zuzugreifen.

Oder verstehe ich da jetzt etwas verkehrt?


MfG
Michael
--
Michael Schwimmer
Home : http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
dany-sahne
2005-10-25 05:02:02 UTC
Permalink
es lag wohl an mir. ich habe mich unverständlich ausgedrückt. ich wollte
wissen ob, ich mit unc auch auf die wurzel eines laufwerkes zugreifen kann,
um die wurzel mir beispielsweise in einem öffnen-dialog anzeigen zu lassen.

demnächst werde ich's mal eher mit unc programmieren. der standard hat doch
ziemliche vorteile.

gruß
danny
Post by Michael Schwimmer
Hallo Danny
Post by dany-sahne
vielen dank für deine unkomplizierte Hilfe. Das Makro läuft. :-)
freut mich.
Post by dany-sahne
zum UNC-Pfad habe ich noch eine Frage: kann ich bei "
\\server\freigabename\RestVomPfad\Datei.xls"
"RestvomPfad\Datei.xls" weglassen?
Jetzt bin ich aber etwas verwirrt. Warum sollte das weggelassen werden?
Uniform Naming Convention (UNC) ist weitgehend Standard, wenn man
freigegebene Ressourcen (Ordner, ganze Laufwerke etc.) in einem
Rechnernetz ansprechen möchte. Dadurch kann auf eine Verbindung
unter Zuweisung eines Laufwerksbuchstabens verzichtet werden.
Um also eine Datei anzusprechen (öffnen, kopieren, verschieben, löschen
etc.) kann diese Notation benutzt werden. Der Vorteil ist, dass man den
Laufwerksbuchstaben überhaupt nicht benötigt, dieser muss also nicht
erst umständlich ermittelt werden.
Anstatt beispielsweise "X:\IrgendeineDatei.xls" auf einem speziellen
Rechner zu öffnen, kannst du die Notation "\\server\freigabename
\IrgendeineDatei.xls" benutzen, um auf allen Rechnern des Netzwerks (je
nach Berechtigung) auf diese Datei zuzugreifen.
Oder verstehe ich da jetzt etwas verkehrt?
MfG
Michael
--
Michael Schwimmer
Home : http://michael-schwimmer.de
Excel VBA ISBN 3-8273-2183-2
Loading...