Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
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

Pfadprüfung in Workbook_Open

Pfadprüfung in Workbook_Open
Marc
Hallo,
ich verwende folgenden Codeteil um beim Öffnen einer Datei den aktuellen Dateipfad mit einem auf Blatt2 (I25) definierten Pfad abzugleichen.
Das klappt grundsätzlich auch, allerdings nur, wenn der definierte Pfad auf dem aktuellen Computer tatsächlich existiert, ansonsten erhalte ich die Fehlermeldung "Path not Found...".
Gibt es eine Möglichkeit, das zu unterbinden, so dass immer dann, wenn der aktuelle Pfad nicht dem definierten entspricht, das Msg-Makro aufgerufen wird UND das auch, wenn der definierte Pfad auf dem aktuellen Computer gar nicht existiert ?
Private Sub Workbook_Open()
Dim Valid_Filepath As String
Valid_Filepath = Worksheets(2).Range("I25").Value
If ThisWorkbook.Path  Valid_Filepath Then
Call UnauthorizedActions_Msg
End If
End Sub
Kann mir jemand damit weiterhelfen ?
VG und vielen Dank im Voraus,
Marc
AW: Pfadprüfung in Workbook_Open
21.06.2012 02:41:16
Franc
Dieser Codeteil kann eigentlich keine Fehlermeldung hervorrufen ...
Du vergleichst hier nur 2 Werte. Selbst wenn einer der 2 Werte leer ist, ist ein Vergleich möglich.
Ein Fehler dürfte es erst dann geben, wenn du etwas aufrufen willst und das ins leere läuft.
An welcher Stelle bleibt das Marko hängen? (solltest normal debuggen drücken können)
Wenn nicht, dann schreib am Anfang stop rein und dann kannst alles mit F8 (Einzelschritt) durchgehen um zu sehen wo es hängt.
AW: Pfadprüfung in Workbook_Open
21.06.2012 07:40:22
Marc
Hallo Franc,
vielen Dank für Deine Antwort !
Die Fehlermeldung, die ich bekomme lautet "Run-time error '76': Path not found" (Englisches MS Office).
Der Debugger funktioniert hier nicht bzw. springt nicht an.
Die Fehlermeldung erscheint nur in bestimmten Fällen - s. Beispiele:
1) Definiere ich als Pfad z.B. C:\Users\Notebook\Desktop und lege die Datei dann dort auf einem Unterordner ab (z.B. C:\Users\Notebook\Desktop\Test-Ordner), funktioniert alles korrekt und mein MessageBox-Makro startet.
2) Ist das Laufwerk des definierten Pfades allerdings gar nicht vorhanden, dann erscheint die obige Fehlermeldung.
Beispiel: Der definierte Pfad lautet: G:\Operations\Projects\Test und auf dem Computer, von dem die Datei geöffnet wird ist kein Laufwerk G vorhanden.
Ich hatte mir überlegt, ob man hier evtl. zusätzlich einbauen könnte, wenn Pfad nicht vorhanden, dann rufe ebenfalls das Makro auf mit Call UnauthorizedActions_Msg, weiß aber nicht, wie das geht.
VG,
Marc
Anzeige
AW: Pfadprüfung in Workbook_Open
21.06.2012 08:04:13
fcs
Hallo Marc,
die Prüfung, ob Verzeichnis vorhanden oder nicht, hilf auch nicht endgültig weiter. Du muss auch die Struktur anpassen. siehe meine andere Antwort.
Das Verzeichnis kannst du wie folgt prüfen:
    If Dir(Valid_Filepath, vbDirectory) = "" Then

Gruß
Franz
AW: Pfadprüfung in Workbook_Open
21.06.2012 09:17:46
Marc
Hallo Franz,
ich poste das nochmal neu, um nur den wesentlichen Teil hervorzuheben.
VG und nochmals danke,
Marc
AW: Pfadprüfung in Workbook_Open
21.06.2012 07:46:02
fcs
Hallo Marc,
du muss die Struktur der Prüfung vervollständigen oder ein Exit Sub einfügen.
Nach der Ausführung von "UnauthorizedActions_Msg" (was immer da auch passieren mag) macht das Makro mit der Zeile nach "End If" weiter.
Was soll denn am Ende passieren, wenn die Datei aus einem falschen Verzeichnis geöffnet wurde?
Gruß
Franz
Private Sub Workbook_Open()
Dim Valid_Filepath As String
Valid_Filepath = Worksheets(2).Range("I25").Value
If ThisWorkbook.Path  Valid_Filepath Then
Call UnauthorizedActions_Msg
Else
MsgBox "alles OK" 'Testzeile
End If
End Sub
' oder
Private Sub Workbook_Open()
Dim Valid_Filepath As String
Valid_Filepath = Worksheets(2).Range("I25").Value
If ThisWorkbook.Path  Valid_Filepath Then
Call UnauthorizedActions_Msg
Exit Sub
End If
End Sub

Anzeige
AW: Pfadprüfung in Workbook_Open
21.06.2012 08:21:32
Marc
Hallo Franz,
vielen Dank für Deine Antwort !
Das Makro zeigt eine UserForm an, erstellt ein LogFile und schließt anschließend die Mappe komplett.
Ich glaube, ich habe nun auch die Ursache für den Fehler gefunden, aber noch keine Lösung dafür. :-)
Der Fehler wird durch das Makro verursacht, da das im Normalfall ein Logfile in einem ebenfalls definierten Ordner erstellt.
Ist nun auch der Pfad für das Logfile nicht vorhanden, kann es den natürlich nicht finden.
Liege ich hier richtig und wenn ja, kann man es so ändern, dass das Logfile jeweils im gleichen Pfad wie die aktuelle Arbeitsmappe gespeichert wird ?
Makro-Code zur Info:
Sub UnauthorizedActions_Msg()
Dim strPath As String, strEntry As String, strHead As String
Dim FF As Integer
' log file headers
strHead = "Date" & Space$(Len(Format(Date, "YYYY/MM/DD"))) & _
"Time" & Space$(Len(CStr(Time))) & _
"User"
'Pfad & Name der Datei
strPath = Sheets(2).Range("I21") & "Unauthorized-Access.txt" _
' log file content
strEntry = Format(Date, "YYYY/MM/DD") & Space$(2) & _
Time & Space$(2) & _
Environ$("UserName") & Space$(2)
FF = FreeFile
' checks if log file already exists and creates new one if not yet available
If Dir(strPath) = "" Then
Open strPath For Append As #FF
Print #FF, strHead
Close #FF
End If
' writes text in log file
Open strPath For Append As #FF
Print #FF, strEntry
Close #FF
Const bytZeit As Byte = 5 'time limit for automatic closure
Dim objWSH As Object, intMSG As Integer
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup("Unauthorized actions reported - No permissions to save or send file ! _
", bytZeit, "Unauthorized Access !", vbCritical)
Set objWSH = Nothing
ActiveWorkbook.Close False
End Sub
VG und nochmals danke,
Marc
Anzeige
AW: Pfadprüfung in Workbook_Open
21.06.2012 10:14:48
fcs
Hallo Marc,
mit nachfolgenden Anpassungen sollte es funktionieren.
Ich gehe davon aus, dass in Sheet 2, Zelle "I21", das Verzeichnis für das Logfile in der Form "D:\Test\LOG-File\" steht.
Gruß
Franz
Sub UnauthorizedActions_Msg()
Dim strPath As String, strEntry As String, strHead As String
Dim FF As Integer
' log file headers
strHead = "Date" & Space$(Len(Format(Date, "YYYY/MM/DD")) - 2) & _
"Time" & Space$(Len(CStr(Time)) - 2) & _
"User"
'Verzeichnes des Log-Files
strPath = Sheets(2).Range("I21")
If Right(strPath, 1) = Application.PathSeparator Then
'Backslash "\" abtrennen
strPath = Left(strPath, Len(strPath) - 1)
End If
' prüfen, ob log-Verzeichnis existiert
If Dir(strPath, vbDirectory) = "" Then
'Logfile im Verzeichnis der Datei anlegen
strPath = ActiveWorkbook.Path
End If
'Pfad & Name der Datei
strPath = strPath & Application.PathSeparator & "Unauthorized-Access.txt"
' checks if log file already exists and creates new one if not yet available
If Dir(strPath) = "" Then
FF = FreeFile
Open strPath For Append As #FF
Print #FF, strHead
Close #FF
End If
' log file content
strEntry = Format(Date, "YYYY/MM/DD") & Space$(2) & _
Time & Space$(2) & _
Environ$("UserName") & Space$(2)
FF = FreeFile
' adds text to log file
Open strPath For Append As #FF
Print #FF, strEntry
Close #FF
Const bytZeit As Byte = 5 'time limit for automatic closure
Dim objWSH As Object, intMSG As Integer
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup("Unauthorized actions reported - No permissions to save or send file ! _
", _
bytZeit, "Unauthorized Access !", vbCritical)
Set objWSH = Nothing
ActiveWorkbook.Close False
End Sub

Anzeige
AW: Pfadprüfung in Workbook_Open
21.06.2012 10:20:46
Marc
Hallo Franz,
vielen vielen Dank dafür - das klappt super so ! :-)
Klasse - hätte ich alleine (noch) nicht hinbekommen.
VG und einen schönen Tag noch,
Marc
AW: Pfadprüfung in Workbook_Open
21.06.2012 22:53:18
Marc
Hallo Franz,
ich wollte nur nochmal eine kurze Rückmeldung geben: :-)
An dieser Sache habe ich schon eine Weile erfolglos herumprobiert und nichts hat geklappt - mit Deinem Code funktioniert es schnell und fehlerfrei, perfekt !
Super Arbeit !
VG und nochmals danke,
Marc

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige