Eigenschap: Opmerking van een excel bestand opvragen zonder excel bestand te openen

Status
Niet open voor verdere reacties.

sanders1969

Gebruiker
Lid geworden
29 dec 2018
Berichten
243
Als je een (excel) bestand in windows verkenner met je rechtermuis klikt kan je de eigenschappen bekijken.
Ik heb een excel bestand waar een makro geactiveerd wordt en als ik dit bestand via Access benader loopt het vast omdat de Makro geactiveerd wordt.
Ik ben opzoek om alleen de eigenschap: Opmerking van het excel bestand op te vragen en wil niet het excel bestand openen.
Ik heb geGoogled en overal vind ik dat je betreffende excel bestand eerst moet openen maar dan loopt mijn code vast omdat de Makro dit juist beveiligd.
Het moet toch mogelijk kunnen zijn alleen de eigenschappen van een excel bestand op te vragen zonder dit bestand te openen?
Onderstaande code loopt bij mij vast omdat de excel bestand geopend wordt en ik wil de waarde van de comments opvragen.

Code:
Dim LastAuthorName
    Dim CreatedOn
    Dim LastSavedOn
    Dim Title
    Dim Comments
    'To retrieve the last Author of the File
    LastAuthorName = ThisWorkbook.BuiltinDocumentProperties("last author").Value
    'To get the created on date and time
    CreatedOn = ThisWorkbook.BuiltinDocumentProperties("creation date").Value
    'to get the date and time when last time document was saved
    LastSavedOn = ThisWorkbook.BuiltinDocumentProperties("last save time").Value
    'to get the title of document updated in document property
    Title = ThisWorkbook.BuiltinDocumentProperties("title").Value
    'to get the Author's comment added in document proprty
    Comments = ThisWorkbook.BuiltinDocumentProperties("title").Value
 
Je kunt heel wat eigenschappen van een bestand opvragen, maar niet de BuiltInDocumentProperties. Daarvoor moet je de Excel echt openen. En als de macro standaard wordt uitgevoerd, zou je in die macro wellicht een check kunnen inbouwen die controleert of deze specifieke database geopend is. Of Access in het algemeen (dat laatste is makkelijker).
 
Ik heb al iets gevonden echter moet ik deze nog finetunen.
Zodra ik het draaiend heb zet ik deze live!
 
Bij deze de code om de collections van een file op te vragen.
Veld: Opmerkingen zit uit mijn hoofd bij de 24 veld en daar bewaar ik de versie nummer en kon ik deze opvragen om een nieuwe versie te updaten.
En ja zijn meerdere manieren om versie beheer te doen ;-)

Code:
Public Sub GetFileCollection(strPath As String, strFile As String)

    On Error GoTo Err_Handler
    
    Set objFolder = CreateObject("Shell.Application").Namespace("" & strPath)
    Set objFolderItem = objFolder.ParseName(strFile)
    
    For I = 0 To 320
        aName = objFolder.GetDetailsOf(objFolder.Items, I)
        aValue = objFolder.GetDetailsOf(objFolderItem, I)
        Debug.Print 1 & "e veld: " & aName & " = " & aValue
    Next I
    
Exit_Handler:
    Exit Sub
    
Err_Handler:
    MsgBox "Error " & Err.Number & " in " & strProc & " procedure: " & Err.Description
    GoTo Exit_Handler

End Sub
 
Oja vage reden ik moest "" & in onderstaande code plaatsen anders liep het vast
Set objFolder = CreateObject("Shell.Application").Namespace("" & strPath)
 
Die code heb ik ook, al gebruik ik 'm anders. Bij dit soort aantallen loopt het scherm Direct gelijk weer leeg :).
 
Krijg je zoiets:
Code:
Function ListAllProperties(strPath As String, strFile As String)
Dim objFolder As Object, objFolderItem As Object
Dim oDir As Variant, aName As String, aValue As Variant
    
    Set objFolder = CreateObject("Shell.Application").NameSpace("" & strPath)
    Set objFolderItem = objFolder.ParseName(strFile)
    
    For i = 0 To 320
        aName = objFolder.GetDetailsOf(objFolder.Items, i)
        aValue = objFolder.GetDetailsOf(objFolderItem, i)
        If Not aValue = vbNullString Then Debug.Print i & " - " & aName & " = " & aValue
    Next

End Function
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan