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

wer hat die Datei geöffnet

wer hat die Datei geöffnet
28.01.2013 21:49:10
Nico
Hallo zusammen,
gibt es unter Excel 2007 per VBA eine Möglichkeit herauszufinden, welcher User (Username) das Workbook gerade geöffnet hat oder zumindest ob es schon von einer anderen Person geöffnet wurde und somit nicht mehr bearbeitet werden kann.
Diese Information würde ich nämlich gerne abfangen und gleich beim Öffnen der Datei(.xlsm) dem User mitteilen. Der Code soll natürlich in der Datei stehen, um die es auch geht und nicht in einer anderen Excel-Datei.
Vielen Dank für Eure Vorschläge
VG,Nico

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wer hat die Datei geöffnet
28.01.2013 22:59:35
Uduuh
Hallo,
Option Explicit
Sub TestMakro()
Dim strFile As String
strFile = "c:\test.xls"
Pruefen strFile
MsgBox "OK"
End Sub

Sub Pruefen(strFileToOpen As String)
Do While IsFileOpen(strFileToOpen)
If MsgBox(strFileToOpen & " ist von " & LastUser(strFileToOpen) & " geöffnet." _
& vbLf & "Bitte schließen lassen.", _
vbOKCancel + vbInformation, "Datei geöffnet") = vbCancel Then End
Loop
End Sub
Function IsFileOpen(strFullPathFileName As String) As Boolean
'// VBA version to check if File is Open
'// We can use this for ANY FILE not just Excel!
'// Ivan F Moala
'// http://www.xcelfiles.com
Dim hdlFile As Long
'// Error is generated if you try
'// opening a File for ReadWrite lock >> MUST BE OPEN!
On Error GoTo FileIsOpen:
hdlFile = FreeFile
Open strFullPathFileName For Random Access Read Write Lock Read Write As hdlFile
IsFileOpen = False
Close hdlFile
Exit Function
FileIsOpen:
'// Someone has it open!
IsFileOpen = True
Close hdlFile
End Function
Function LastUser(strPath As String) As String
'// Code by Helen from http://www.
_
visualbasicforum.com/index.php?s=
'// This routine gets the Username of the File In Use
'// Credit goes to Helen for code & Mark for the idea
'// Insomniac for xl97 inStrRev
'// Amendment 25th June 2004 by IFM
'// : Name changes will show old setting
'// : you need to get the Len of the Name stored just before
'// : the double Padded Nullstrings
Dim strXl As String
Dim strFlag1 As String, strflag2 As String
Dim i As Integer, j As Integer
Dim hdlFile As Long
Dim lNameLen As Byte
strFlag1 = Chr(0) & Chr(0)
strflag2 = Chr(32) & Chr(32)
hdlFile = FreeFile
Open strPath For Binary As #hdlFile
strXl = Space(LOF(hdlFile))
Get 1, , strXl
Close #hdlFile
j = InStr(1, strXl, strflag2)
#If Not VBA6 Then
'// Xl97
For i = j - 1 To 1 Step -1
If Mid(strXl, i, 1) = Chr(0) Then Exit For
Next
i = i + 1
#Else
'// Xl2000+
i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)
#End If
'// IFM
lNameLen = Asc(Mid(strXl, i - 3, 1))
LastUser = Mid(strXl, i, lNameLen)
End Function

Gruß aus’m Pott
Udo

Anzeige
AW: wer hat die Datei geöffnet
28.01.2013 23:21:22
Nico
Hallo Udo,
vielen Dank derweile. Schaut ja doch recht kompliziert aus, hätte gedacht, das geht irgendwie auch einfacher. Naja, werde den Spaß mal versuchen in meinem Code zu verbauen.
Gruß, Nico

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige