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
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.
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 SubHier 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
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
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.
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 SubHier ö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:
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:
Der Makrobefehl für das Ausführen der Batchdatei ist
Die Null in der Klammer bewirkt, dass das schwarze Fenster der Batchdatei ausgeblendet wird.
Und noch ein Hinweis:
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
Inhalt:
net use x: \\11.111.111.111\freigabename passwort /user:benutzernameDarü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: /deleteDer 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.
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
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.
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
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

