Excel: Get Last Author aus BuiltInDocumentProperties
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Excel: Get Last Author aus BuiltInDocumentProperties
Hallo zusammen,
kann mir jemand bei dieser Frage weiterhelfen? (Ich hatte im NI-Forum schon mal gefragt, aber bisher leider ergebnislos.)
Ich benötige die Angabe, wer ein Excel-Workbook zuletzt bearbeitet hat (wer und nicht wann!). Dies ist eine Excel-Property und kann prinzipiell per ActiveX abgefragt werden. Leider scheitere ich an der Umwandlung des Variants, welches ich von Excel zurück bekomme, siehe Beispiel-VI oder Crosspost. Im VI ist auch noch ein Link zum entsprechenden MSDN-Eintrag angegeben... Beispiel-VI inhängt an.
Excel: Get Last Author aus BuiltInDocumentProperties
Weiß auch nicht.
Will dich aber trotzdem nicht im Regen stehen lassen und biete mal folgenden Workaround an:
VBA Funktion importieren und aufrufen, Ergebnis auswerten.
Folgenden Code als Get_BuiltinDocumentProperties.bas abspeichern.
Code:
Function Get_BuiltinDocumentProperties(p As String) As String
Get_BuiltinDocumentProperties = ThisWorkbook.BuiltinDocumentProperties(p)
End Function
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Excel: Get Last Author aus BuiltInDocumentProperties
Hallo SeBa,
schon mal danke für die Antwort. Momentan scheitere ich noch an Office-Sicherheitseinstellungen ("Der programmatische Zugriff auf das Visual Basic-Projekt ist nicht sicher"...), aber ich habe wieder einen Ansatz.
Schöner wäre der direkte Zugriff, ohne erst Code in Excel zu injizieren...
Excel: Get Last Author aus BuiltInDocumentProperties
Ist ja auch nicht unbedingt nötig, falls das Excelfile statisch ist und du vorher die Funktion darin ablegen kannst. Dann brauchst du nur das Makro aufrufen.
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
09.11.2010, 14:43 (Dieser Beitrag wurde zuletzt bearbeitet: 09.11.2010 14:44 von GerdW.)
Excel: Get Last Author aus BuiltInDocumentProperties
Hallo,
noch ein Nachtrag:
Leider beißt sich das Aufrufen einer eingebetteten Excel-Funktion (und wahrscheinlich auch alle andere ActiveX-Zugriffe) mit der gleichzeitigen Verwendung von DotNet/System.FileWatch zur Überwachung von Dateiänderungen/-zugriffen. Ergibt nur eine schöne, dauernd aktive Event-Schleife
Muss ich also weiter auf die Angabe verzichten, wer zuletzt auf "meine" Dateien zugegriffen hat und "von Hand" nachschauen...
Nachtrag:
Der dämliche WindowsExplorer kommt natürlich an die gewünschte Information, ohne den System.Filewatch auszulösen...
Excel: Get Last Author aus BuiltInDocumentProperties
Ja, stimmt. Habs auch mal ausprobiert
ActiveX Verbindung zu einem Excelfile feuert ne Menge Events...
Hmmm... du willst also wissen, wer (und wann vielleicht) die Datei bearbeitet hat.
Als weitere Möglichkeit könnte ich dir hier ein Logfile anbieten.
So was in der Art:
Time-open / Time-close / User / File / Saved?
Das Logfile könnte an beliegiger Stelle als Textfile abgelegt werden.
Wäre das eine Option?
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Excel: Get Last Author aus BuiltInDocumentProperties
Danke SeBa,
aber langsam wird das Overkill zur gewünschten Funktionalität...
Ich verwalte eine Liste, in der meine User ihre Änderungswünsche eintragen. Momentan lasse ich ein Popup erscheinen, sobald jemand auf diese Liste zugreift. Es wäre schön gewesen, wenn der Popup mir auch gleich mitteilt, wer da zugegriffen hat - dann muss ich nicht erst die Exceldatei öffnen (, sondern könnte nach "Sympathie" sortieren).
Jetzt habe ich das Makro in die Exceldatei integriert und lasse mir den Nutzer im Excelsheet anzeigen. Funktioniert ausreichend komfortabel...
Excel: Get Last Author aus BuiltInDocumentProperties
Nachtrag
Zum Thema Overkill... whahahaha was ist schon Overkill. Den Filewatcher auf das Log ausrichten und auf Änderung überwachen. Dann die letzte Zeile lesen und du weißt was du wissen wolltest.
Diese wenigen Zeilen erzeugen schonmal ein Minilog. Sicher kann man das noch aufhübschen...
Das mit dem feststellen, ob gespeichert wurde klappt leider nur, wenn der User auch selbst vor Beenden speichert. Klickt man auf das X rechts oben, wird nicht mehr registriert ob Änderungen gespeichert/verworfen werden. Daher hab ichs auch mal weggelassen.
Code:
' kopieren in "DieseArbeitsmappe"
Option Explicit
Dim sTimeOpen As String
Dim sTimeClose As String
Dim sSaved As String
Dim sUsername As String
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sLine As String
sTimeClose = CStr(Now())
sLine = sTimeOpen & vbTab & sTimeClose & vbTab & sUsername & vbCrLf
Call Log(sLine, ThisWorkbook.path & "\Log.txt")
End Sub
Private Sub Workbook_Open()
sUsername = Environ("username")
sTimeOpen = CStr(Now())
sSaved = "No"
End Sub
Private Sub Log(msg As String, path As String)
Dim iFileNumber As Long
iFileNumber = FreeFile()
Open path For Append As #iFileNumber
Print #iFileNumber, msg
Close #iFileNumber
End Sub
Gruß SeBa
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
Excel: Get Last Author aus BuiltInDocumentProperties
Hallo GerdW, hallo SeBa
es gibt folgende Möglichkeit:
Unter http://support.microsoft.com/kb/224351 befindet sich in der „DsoFileSetup_KB224351_x86.exe“ eine dsofile.dll die durch ausführen der *.exe installiert wird und somit LabVIEW zur Verfügung steht (ActiveX).
Alle OLE-Dokumenteigenschaften der MS-Office-Dateien können abgefragt und zum Teil gesetzt werden.