LabVIEWForum.de
Excel: Get Last Author aus BuiltInDocumentProperties - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: ActiveX & .Net (/Forum-ActiveX-Net)
+---- Thema: Excel: Get Last Author aus BuiltInDocumentProperties (/Thread-Excel-Get-Last-Author-aus-BuiltInDocumentProperties)



Excel: Get Last Author aus BuiltInDocumentProperties - GerdW - 09.11.2010 10:56

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 inLv85_imghängt an.


Excel: Get Last Author aus BuiltInDocumentProperties - SeBa - 09.11.2010 12:55

Weiß auch nicht. Huh

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



Excel: Get Last Author aus BuiltInDocumentProperties - GerdW - 09.11.2010 14:33

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 - SeBa - 09.11.2010 14:38

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


Excel: Get Last Author aus BuiltInDocumentProperties - GerdW - 09.11.2010 14:43

Hallo SeBa,

so geht's natürlich auch. Schön, dass ich der Admin dieser Excel-Liste binSmile(Und die Kollegen eher weniger in Excel/VBA unterwegs sind...)


Excel: Get Last Author aus BuiltInDocumentProperties - GerdW - 10.11.2010 09:27

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-SchleifeWacko

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... Grrr


Excel: Get Last Author aus BuiltInDocumentProperties - SeBa - 10.11.2010 13:02

Ja, stimmt. Habs auch mal ausprobiertBig Grin
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


Excel: Get Last Author aus BuiltInDocumentProperties - GerdW - 10.11.2010 14:26

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" sortierenSmile).

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 - SeBa - 10.11.2010 16:15

NachtragBig Grin

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


Excel: Get Last Author aus BuiltInDocumentProperties - rasta - 12.11.2010 10:02

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.

lv09VI im Anhang:
Gruß
Ralf