Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: My Computer oder Dieser PC

My Computer oder Dieser PC
01.05.2017 18:59:40
Peter
Hallo zusammen, ich habe folgenden Code gefunden
Function MyComputer() As Variant 'gibt den Wert "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" aus
Dim objShell As Object, objFolder As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H11&)
MyComputer = objFolder.self.Path
Set objShell = Nothing
Set objFolder = Nothing
End Function

Wenn ich den Wert aus Funktion "MyComputer" in den Win-Explorer eingebe geht er auf "Dieser PC", wenn ich aber dies mit einem Makro mache siehe X_MyComputer() erhalte ich eine Fehlermeldung.
Sub X_MyComputer()
Dim sTmp$
sTmp = MyComputer
ChDrive sTmp 'Fehlermeldung
ChDir sTmp'Fehlermeldung
Stop
End Sub

Danke für Eure Hilfe
Pepi
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Da gab es doch vor ein paar...
01.05.2017 19:30:25
Case
Hallo Pepi, :-)
... Tagen schon folgende Hinweise: ;-)
FileDialog mit "Computer" starten...
Was möchtest Du denn konkret?
Servus
Case

Anzeige
AW: Da gab es doch vor ein paar...
02.05.2017 16:03:28
Peter
Hallo Case
Du bist ja sehr aufmerksam - du hast mir vor ein paar Tagen einen Script "Main()" geschickt, der eigentlich genau das macht, was ich suche - doch leider zeigt dieser Dialog keine Netzwerklaufwerke an.
Kennst du eine Möglichkeit, "Main()" so anzupassen, dass auch Netzwerkaufwerke angezeigt werden? - das wäre supper.
LG
Pepi
Anzeige
BrowseForFolder zeigt auch Netzlaufwerke! (owT)
02.05.2017 16:14:26
EtoPHG

AW: Da gab es doch vor ein paar...
02.05.2017 16:47:35
Peter
Tut mir leid, EtoPHG
bei mir kommt nur C: und D:
muss ich einen Parameter ändern
ich schreibe vom Main() vor ein paar Tagen
LG
Pepi
Es werden doch die...
03.05.2017 07:37:02
Case
Hallo Pepi, :-)
... verbundenen Netzlaufwerke angezeigt. Zumindest bei mir. ;-)
Was nicht angezeigt wird ist der "Netzwerkordner" - der liegt auf einer anderen Ebene. Sieht man auch im Explorer.
Wenn Du alles anzeigen möchtest, dann schreibe es so: ;-)
Option Explicit
Public Sub Main()
Dim objShell As Object
Dim varDir As Variant
Dim strTMP As String
Set objShell = CreateObject("Shell.Application")
Set varDir = objShell.BrowseForFolder(0, "Ordner", &H1)
On Error Resume Next
strTMP = varDir.Self.Path
On Error GoTo Fin
If strTMP  "" And Left(strTMP, 2)  "::" Then
If Right(strTMP, 1)  "\" Then strTMP = strTMP & "\"
MsgBox strTMP
End If
Fin:
Set objShell = Nothing
Set varDir = Nothing
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Jetzt siehst Du auch den Netzwerkordner.
Mit "Editbox" dann so: ;-)
Set varDir = objShell.BrowseForFolder(0, "Ordner", &H1 + &H10)
Schau Dir einfach mal die Parameter an, dann kommst Du dahinter. \O/
Servus
Case

Anzeige
AW: Es werden doch die...
03.05.2017 12:18:27
Peter
Hallo Case
Lieben Dank für deine grosse Hilfe - ich habe erst morgen die Gelegenheit den Script auszuprobieren.
Leider sind meine System und VBA-Kenntnisse zu gering um zu verstehen, was hier genau abläuft, so verstehe ich auch die Parameter nur der Spur nach - trotzdem ein sehr hilfreiches Programm.
LG Pepi
Anzeige
AW: Es werden doch die...
04.05.2017 09:48:58
Peter
Hallo zusammen, leider komme ich nochmals
mein Laufwerk (Pfad) den ich auswählen möchte sieht wie folgt aus:
"\\dxm01.blabla.grp\kxw\SI-Ordner\Verkauf"
Ist es möglich mit "Main()" auch sowas "hervorzuzaubern"? Ich habe Verschiedenes versucht, doch reicht mein Wissen bei Weitem nicht.
vielen Dank für Eure Hilfe
Pepi
Anzeige
Probier es so:
04.05.2017 12:17:29
Anton
Hallo Peter,
Set varDir = objShell.BrowseForFolder(0, "Ordner", 0, "\\dxm01.blabla.grp\kxw")

mfg Anton
AW: Probier es so:
05.05.2017 09:28:34
Peter
Hallo Zusammen
ich habe folgendes getestet:
Set varDir = objShell.BrowseForFolder(0, "Ordner", 0, "\\dxm01.blabla.grp\kxw\Test")
wenn ich \Test weglasse sehe ich auch alle anderen Ordner auf der Ebene von Test - das ist soweit gut.
Doch 2 Funktionen fehlen mir noch:
1. ich muss auch die lokalen C:, D:, Desktop etc. sehen. (wie bisher)
2. den Ordner "....\Test" gibt es auch auf anderen Domainen (enthält die gleichen Daten!), je nach PC sind diese verschieden und ich weiss nicht im Voraus, wie die Domainen heissen. Pro PC gibt es auch mehrere Pfade mit Domainen, die ich alle sehen sollte - ist das möglich?
LG Pepi
Anzeige
My Computer oder Dieser PC
06.05.2017 12:59:49
Anton
Hallo Peter,
den Ordner "....\Test" gibt es auch auf anderen Domainen (enthält die gleichen Daten!), je nach PC sind diese verschieden und ich weiss nicht im Voraus, wie die Domainen heissen. Pro PC gibt es auch mehrere Pfade mit Domainen, die ich alle sehen sollte
ich hätte an deiner Stelle den User mit einer Meldung aufgefordert die Netzlaufwerke zu verbinden
und erst dann den Auswahldialog gestartet.
mfg Anton
Anzeige
AW: My Computer oder Dieser PC
07.05.2017 22:29:45
Peter
Hallo Anton
Unsere User können keine Netzwerklaufwerke verbinden. Jeder sollte einfach seine Laufwerke sehen, die für ihn freigeschaltet sind und zwar alle.
Die Ansätze, die ich bis jetzt erhalten habe, ermöglichen ja jeweils die eine oder andere Möglichkeit aber nicht alle zusammen. Doch schaffe ich es nicht, die richtige Syntax zu finden, dass ich alle Laufwerke sehe - auch die gemappten.
Ich hoffe immer noch auf eine Lösung.
mfg Pepi
Anzeige
AW: My Computer oder Dieser PC
08.05.2017 09:38:03
Anton
Hallo Peter,
mit

.BrowseForFolder(0, "Ordner auswählen", &H0, 17)
sehe ich alle lokale Laufwerke - auch die gemappten.
mfg Anton
AW: My Computer oder Dieser PC
09.05.2017 22:50:25
Peter
Vielen Dank Anton, bin diese Woche unterwegs und kann den script nicht prüfen - werde es aber bald nachholen
mfg
Pepi
Anzeige
AW: My Computer oder Dieser PC
01.05.2017 19:34:35
Oberschlumpf
Hi Peter,
du kennst die Syntax für die Befehle ChDir + ChDrive?
In beiden Fällen wird im Parameter ein anderer "Text" erwartet als die Function MyComputer liefert.
Auch dann, wenn die Direkteingabe im win-Explorer funktioniert.
Wieso wechselst du mit den Befehlen nicht direkt in das Laufwerk/Verzeichnis, welches du erreichen möchtest?
Denn im "Verzeichnis" MyComputer kann man keine Dateien speichern; auch nicht direkt im Win-Explorer ;-)
Ciao
Thorsten
Anzeige
AW: My Computer oder Dieser PC
02.05.2017 15:59:09
Peter
Hallo Thorsten
Da mein Makro auf verschiedenen PC's laufen soll, die unterschiedliche konfiguriert sind (gemappt - das gleiche Verzeichnis heisst nicht immer gleich!!), kenne ich die Dateistruktur nicht - so wollte ich mit "My Computer" einfach möglichst weit "unten" beginnen. Wenn es keine Möglichkeit gibt bei "My Computer" zu starten beginne ich vielleicht bei "Desktop" oder dort, wo die aktuelle Datei gespeichert ist.
LG Pepi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

My Computer oder Dieser PC in VBA nutzen


Schritt-für-Schritt-Anleitung

Um den Ordner "Dieser PC" in Excel VBA zu öffnen, kannst du folgenden Code verwenden. Dieser Code gibt den Pfad von "My Computer" zurück:

Function MyComputer() As Variant
    Dim objShell As Object, objFolder As Object
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(&H11&)
    MyComputer = objFolder.Self.Path
    Set objShell = Nothing
    Set objFolder = Nothing
End Function

Um diesen Pfad in einem Makro zu nutzen, kannst du die folgende Subroutine verwenden:

Sub X_MyComputer()
    Dim sTmp As String
    sTmp = MyComputer
    ChDrive sTmp
    ChDir sTmp
    Stop
End Sub

Beachte, dass das Ausführen von ChDrive und ChDir möglicherweise zu Fehlermeldungen führen kann, wenn der Pfad nicht korrekt interpretiert wird. Hier ist es wichtig, die richtige Syntax zu verwenden, insbesondere wenn du mit gemappten Laufwerken arbeitest.


Häufige Fehler und Lösungen

  1. Fehlermeldung bei ChDrive oder ChDir

    • Ursache: Der Pfad, der von der Funktion "MyComputer" zurückgegeben wird, ist möglicherweise nicht direkt für ChDrive oder ChDir geeignet.
    • Lösung: Stelle sicher, dass du nur Laufwerksbuchstaben oder gültige Pfade für diese Befehle verwendest.
  2. Nicht alle Laufwerke sichtbar

    • Ursache: Wenn die Funktion nicht alle gemappten Netzlaufwerke anzeigt.
    • Lösung: Verwende die Methode .BrowseForFolder, um alle verfügbaren Laufwerke anzuzeigen, wie im Beispiel von Case beschrieben.

Alternative Methoden

Wenn du eine Benutzeroberfläche zur Auswahl von Ordnern verwenden möchtest, kannst du das BrowseForFolder-Objekt nutzen:

Sub OpenFolderDialog()
    Dim objShell As Object
    Dim varDir As Variant
    Set objShell = CreateObject("Shell.Application")
    Set varDir = objShell.BrowseForFolder(0, "Ordner auswählen", 0)
    If Not varDir Is Nothing Then
        MsgBox varDir.Self.Path
    End If
    Set objShell = Nothing
End Sub

Diese Methode öffnet ein Fenster, in dem du den gewünschten Ordner auswählen kannst.


Praktische Beispiele

Ein praktisches Beispiel, um alle lokalen und gemappten Laufwerke anzuzeigen, ist die folgende Subroutine:

Sub ShowAllDrives()
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim drive As Object
    For Each drive In objFSO.Drives
        If drive.IsReady Then
            MsgBox drive.DriveLetter & ": " & drive.VolumeName
        End If
    Next drive
    Set objFSO = Nothing
End Sub

Diese Subroutine listet alle verfügbaren Laufwerke auf, die bereit sind, und zeigt deren Laufwerksbuchstaben und Namen an.


Tipps für Profis

  • Überprüfe die Berechtigungen der Benutzer, um sicherzustellen, dass sie auf die gemappten Laufwerke zugreifen können.
  • Verwende On Error Resume Next, um Fehler abzufangen und benutzerfreundliche Fehlermeldungen zu erstellen.
  • Experimentiere mit den Parametern von .BrowseForFolder, um den Dialog an deine Bedürfnisse anzupassen. Du kannst beispielsweise die Sichtbarkeit von Netzwerkordnern steuern.

FAQ: Häufige Fragen

1. Wie kann ich den VBA Computername auslesen? Du kannst den Computername mit dem folgenden Code auslesen:

Dim computerName As String
computerName = Environ("COMPUTERNAME")
MsgBox computerName

2. Warum funktioniert der Zugriff auf Netzlaufwerke nicht? Stelle sicher, dass die Netzlaufwerke korrekt verbunden sind und du die notwendigen Berechtigungen hast. Das kann in einem PC Forum oft diskutiert werden, wenn Benutzer Probleme mit der Sichtbarkeit von Laufwerken haben.

3. Wo finde ich die Syntax für ChDrive und ChDir? Die Syntax ist in der VBA-Dokumentation zu finden. Beide Befehle erwarten spezifische Eingaben, die korrekt formatiert sein müssen, um Fehler zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige