Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro Pfad als IP angabe. Passwort erforderlich





Frage

Ich öffne über ein Makro bis jetzt meine Dateien von meinem PC. Jetzt möchte ich allerdings diese Datei auch auf anderen PCs ausführen, nur leider haben diese die festplatte des anderens rechner nicht in ihrem PC als Laufwerksbuchstabe eingebunden und somit kann das Makro nicht auf die Datei zugreifen. Ist es möglich das ich einfacvh einen Link mit IP eingebe in etwa so xx.xxx.xx.x\daten\fuerexcel Jedoch bracuht man für dieses Laufwerk ein passwort und ein benutzernamen. wie mache ich dass? Und noch ganz kurz. kann ich beim Datei öffnen einstellen, das er wenn eine Datei nicht im angegeben Ordner ist in einem zweiten Ordner sucht Also so nach dem motto open i:\xxx.xls if xxx.xls does not exist open h:\xxx.xls wäre für jede hilfe dankabr. Danke und grus

Antwort 1 von coros

Hallo Michael,

das mit dem Laufwerk habe ich nicht ganz verstanden. Geht es hierbei um ein Netzwerk?

Zum 2. Teil Deiner Frage, könnte man das wie folgt lösen:

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche

Option Explicit

Sub Pfad_prüfen()
    Dim Dateityp$
    Dim Verzeichnis As String
    Dim Dat_vorhanden As Boolean
    
    Verzeichnis = "H:\"
    Dateityp = Dir(Verzeichnis & "\*.xls")
    
    Do While Dateityp <> ""
    If Dateityp <> "Deine Exceldatei.xls" Then
    Dat_vorhanden = True
    End If
    Dateityp = Dir()
    Loop

    If Dat_vorhanden = True Then
    'Hier Öffnen Datei 1 Makro....
    Workbooks.Open "Datei 1.xls"
    Else
    'Hier Öffnen Datei 2 Makro....
    Workbooks.Open "Datei 2.xls"
    End If
    Dat_vorhanden = False
End Sub



Hier wird Laufwerk H auf Exceldateien geprüft. Wird die Datei "Deine Exceldatei.xls" gefunden, wird die Variable "Dat_vorhanden" auf True gesetzt. Danach wird auf den Zustand, also True oder False, dieser Variable abgefragt. Bei True wird der Code zum Öffnen der 1. Datei ausgeführt und wenn nicht True, also False, dann den Code für das Öffnen der 2 Datei ausführen.

Makro musst Du natürlich von den Dateinamen und dem Laufwerkspfad her noch anpassen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von MichaelS

ja genau es geht um ein netwerk.
er soll die datei Namen.xls öffnen. jedoch liegt diese manchmal auf der einen netzwerkfestplatte und ein anderes mal auf der anderen.
die eine festplatte hat sagen wir mal die ip 11.111.11.11
und die zweite 22.222.22.22

ich sage ihm er soll 11.111.11.11\daten\fuerexcel\Namen.xls öffnen.
wenn die datei nicht vorhanden ist
soll er 22.222.22.22\daten\fuerexcel\Namen.xls öffnen.

Wenn die Datei auch dort nicht ist soll erscheinen. Datei nicht vorhanden und mit einem klick gelangt man wieder zum Anfang des Makros (Ich gebe vorher über ein fenster noch eine nummer ein, da es nicht nur eine datei mit Namen gibt sonder 500 stück) und eben zu dem makro "eingeben"soll man wieder gelangen.

Und jetzt nochmal zu den Festplatten, diese sind eben mit einem benutzernamen und passwort gesichert.

Geht das?
Danke

Antwort 3 von coros

Hallo Michael,

sorry, so ganz verstehe ich dass immer noch nicht. Wenn es sich um ein Netzwerk geht, dann hast Du auf andere Platte Zugrifsrechte oder nicht. Wenn Du Zugrifsrechte hast, werden diese bereits beim Anmelden am PC vergeben. Warum musst Du nun nochmal ein Passwort angeben?

Zu den Orten der Dateien, liegen denn die Datei, in der das Makro gestartet wird und die Dateien, die geöffnet werden sollen auf ein und dem gleichen PC oder nicht. Wenn nicht, warum machst Du nicht über ein Dialogfenster die Auswahl des Pfades, indem sich die Dateien befinden. In etwa wie folgt:

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche

Option Explicit

Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Function GetDirectory(Anzeigetext) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, X As Long, pos As Integer
With bInfo
    .pidlRoot = 0&
    .lpszTitle = Anzeigetext
    .ulFlags = &H1
End With
X = SHBrowseForFolder(bInfo)
path = Space$(512)
r = SHGetPathFromIDList(ByVal X, ByVal path)
If r Then
    pos = InStr(path, Chr$(0))
    GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function

Sub Pfadauswahl()
Dim Pfad As String
Pfad = GetDirectory("Ordner auswählen...")
MsgBox Pfad
End Sub


Hier öffnet ein Dialogfenster, in dem Du den Pfad auswählen kannst und dieser ausgewählte Pfad wird in Variable "Pfad" geschrieben. Alternativ könnte man das auch über "Application.Dialogs(xlDialogOpen)" realisieren.


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Flupo

Du könntest in dein Makro den Aufruf einer externen Batchdatei einbinden.
Inhalt:

net use x: \\11.111.111.111\freigabename passwort /user:benutzername


Darüber wird die Netzablage als Laufwerk x: eingebunden und du kannst mit einem "normalen" Windows-Pfad (also x: anstelle des Pfades mit der IP-Adresse) darauf zugreifen.
Wenn du fertig bist, wird das Ganze mit einer zweiten Batchdatei wieder abgemeldet:

net use x: /delete


Der Makrobefehl für das Ausführen der Batchdatei ist

Dim Ergebnis
Ergebnis = Shell("[pfad]batchdatei.bat", 0)


Die Null in der Klammer bewirkt, dass das schwarze Fenster der Batchdatei ausgeblendet wird.

Und noch ein Hinweis:
Zitat:
Anmerkung°°°Die Shell-Funktion führt standardmäßig andere Programme asynchron aus. Daher muß ein mit Shell ausgeführtes Programm noch nicht abgeschlossen sein, wenn die nächsten Anweisungen, die auf die Shell-Funktion folgen, ausgeführt werden.

Du musst also möglicherweise noch eine Pause in das Makro programmieren.
Die Lösung ist zwar nicht die Eleganteste, könnte aber funktionieren.

Gruß Flupo

Antwort 5 von Flupo

Da du das Öffnen der externen Dateien ja aus einer Excel-Datei heraus startest, könntest du die Einbindung der externen Ablage als Windows-Laufwerk auch per Autostart-Makro in dieser zentralen Datei machen. So umgehst du möglicherweise das Zeitproblem und das Verzeichnis auf dem anderen Rechner steht dir sofort zur Verfügung.
Die Abmeldung des Laufwerkes dann analog dazu beim Beenden der Datei.

Gruß Flupo

Antwort 6 von MichaelS

also das werde ich versuchen.

ich werde das jetzt mit dem dosfenster mit dem net befehl machen.

wegen den 2 Pfaden.

ich möchte das ohne manuelle auswahl machen.

ecxel soll einfach erst im einen pfad suchen und wenn di edatei dort nicht ist, dann soll er sie im anderen ordner öffnen.

Antwort 7 von MichaelS

also das mit net use klappt.
jetzt noh die frage mit den verzeichnissen.

excel muss erklärt bekommen,
dass wenn xxx.xls nicht in X:\test dann öffne xxx.xls in Y:\test

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: