Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1356to1360
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

Zugriff auf ein Dokument in einem Netzwerk finden

Zugriff auf ein Dokument in einem Netzwerk finden
04.04.2014 09:18:51
bassi2008
Hallo liebe Excelianer ;-)
Ich hatte vor ein paar Tagen dieses Thema bereits angesprochen. Auch von Markus dazu Antwort erhalten. Siehe hier:
"Hallo Bassi,
schau mal hier: https://www.herber.de/forum/archiv/1096to1100/1097285_Wer_hat_Datei_geoeffnet_per_MSGBOX.html
Ist das was du suchts.
Gruß Markus"

Besten Dank nocheinmal hierfür.
Nach langem rumprobieren muss ich aber sagen, es funktioniert so nicht richtig.
In dem Link sind zwei Lösungsvorschläge.
Erster Lösungsvorschlag:
Makro Teil 1 in die geöffnete Mappe
Makro Teil 2 in die Mappe die geöffnet werden soll
Da ich aber nur eine Mappe (Exceldatei) habe um die es geht. Wäre die geöffnete Mappe dieselbe wie die, die geöffnet werden soll... weiß ich nicht was ich nun wo einfügen soll...
Zweiter Lösungsvorschlag:
Mit folgendem Code erzeugst du eine kleine Textdatei, wo der Username drin gespeichert wird...
Sub starte_Datei()
Dim cb As Workbook
Dim strDatei As String, strUsername
Set cb = Workbooks.Open("C:\Dokumente und Einstellungen\All Users\Dokumente\test2.xls")
strDatei = cb.Path & "\tag.txt"
If cb.ReadOnly = True Then
Open strDatei For Input As #1
Line Input #1, strUsername
MsgBox "Datei wird gerade bearbeitet von " & strUsername, vbCritical, "Bitte beachten"
cb.Close False
Else
Close #1
Open strDatei For Output As #1
Print #1, Environ("Username")
End If
Close #1
End Sub

cu
Chris

Korrekt ist schon mal, dass die Datei im Falle das sie bereits verwendet wird trotzdem als schreibgeschützt geöffnet wird.
Leider öffnet sich die im Code angegebene MsgBox bei mir nicht. Es wird sofort die Datei schreibgeschützt geöffnet und eine (ungeöffnete) Textdatei mit dem usernamen im selben Ordner gespeichert.
Wenn man dies nun in soweit umändern könnte, dass im Hintergrund nicht extra eine Textdatei gespeichert wird, und die MsgBox die im Code angegeben ist auch wirklich aufgeht - dann wärs perfekt :-)
Vielleicht weiß jemand Rat?
Besten Dank schon einmal.
Viele Grüße Bassi

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zugriff auf ein Dokument in einem Netzwerk finden
04.04.2014 11:34:48
fcs
Hallo Bassi,
du schreibst:
Da ich aber nur eine Mappe (Exceldatei) habe um die es geht. Wäre die geöffnete Mappe dieselbe wie die, die geöffnet werden soll... weiß ich nicht was ich nun wo einfügen soll...

Somit mit muss aller Code der die Information liefern soll, dann in dieser Datei eingebaut werden.
Wenn du keine Textdatei haben willst, dann musst du die Variante mit den benutzerdefinierten Dokumenteigenschaften aus dem Link in angepasster Form verwenden.
Das Ganze funktioniert natürlich nur, wenn die Anwender beim Öffnen der Datei die Makros aktivieren bzw. anderweitig sichergestellt wird (vertrauenswürde Dokumente/Ordner oder auch VBA-Projekte mit entsprechender Signatur), das das Workbook_Open-Ereignismakro ausgeführt wird.
Gruß
Franz
Mit folgendem Code in der Datei sollte es funktionieren.
'Code im VBA-Editor unter DieseArbeitsmappe der Datei
Private Sub Workbook_Open()
With Me
If .ReadOnly = True Then
If MsgBox("Diese Datei """ & .Name & """ ist zur Zeit geöffnet von" & vbLf _
& "Windows-Username: " & .CustomDocumentProperties("winuser_letzter") & vbLf _
& "Excel-Username: " & .CustomDocumentProperties("Exceluser_letzter") & vbLf & vbLf _
& "Datei wieder schließen?", _
vbYesNo + vbQuestion, "Datei schreibgeschützt öffnen") = vbYes Then
.Close savechanges:=False
End If
Else
'beim Öffnen der Datei die benutzerdefinierten Eigenschaften aktualisieren
.CustomDocumentProperties("winuser_letzter") = Environ("Username")
.CustomDocumentProperties("Exceluser_letzter") = Application.UserName
.Save
End If
End With 'Me
End Sub
Sub CustomDocumentProperties_hinzufuegen()
'Dieses Makro nur einmal ausführen, damit die benutzerdefinierten Dokumenteigenschaften _
in der Arbeitsmappe eingerichtet werden.
With ActiveWorkbook.CustomDocumentProperties
.Add Name:="winuser_letzter", LinkToContent:=False, Type:=msoPropertyTypeString, _
Value:=Environ("UserName")
.Add Name:="Exceluser_letzter", LinkToContent:=False, Type:=msoPropertyTypeString, _
Value:=Application.UserName
End With
ActiveWorkbook.Save
End Sub

Anzeige
AW: Zugriff auf ein Dokument in einem Netzwerk finden
06.04.2014 17:13:37
bassi2008
Franz, allerbesten Dank.
Es funktioniert hervorragend :-)

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige