2009-04-03 5 views
0

Je suis en train de mettre à jour les propriétés du document et créer de nouvelles entrées si elles n'existent pasdsolefile - gestion des erreurs lorsque la valeur n'existe pas (dans Excel)

Cependant ce genre de chose ne fonctionne pas

Set objDocProps = DSO.GetDocumentProperties(sfilename:=FileName) 

With objDocProps 
If .CustomProperties("ABC") Is Nothing Then 
'create it here 

et si je mets un gestionnaire d'erreur là-dedans il vomit comme étant soit verrouillé ou ayant une perte de connexion

errhandler: 
Select Case Err.Number 
Case -2147220987 ' missing custom property 
Debug.Print "missing custom property" 
With objDocProps 
    .CustomProperties("ABC").Value = "banana!" 

Répondre

0

Il semble y avoir des problèmes lors de la tentative d'accès à CustomProperties par son nom.

La solution que je l'ai mis en œuvre est de itérer la collection CustomPropery pour déterminer l'indice de l'élément (si elle existe), puis utilisez cette option pour définir la valeur (ou ajouter une nouvelle si elle ne fonctionne pas)

Passez en: vos propriétés personnalisées objet, l'entrée que vous souhaitez remplir et la valeur que vous souhaitez remplir avec

Sub UpsertEntry(objCustomProps, entryname, entryvalue) 
    'update the custom property with value supplied 
    On Error Resume Next 

    Dim icount 
    Dim iindex 

    For icount = 1 To objCustomProps.Count 

    If objCustomProps.Item(icount).name = entryname Then 
     iindex = icount 
     Exit For 
    Else 
     iindex = 0 
    End If 

    Next 


    If iindex = 0 Then 'no custom property found 

    objCustomProps.Add entryname, entryvalue 
    Wscript.Echo " Adding [" & entryname & ":" & entryvalue & "]" 
    Else 
    objCustomProps.Item(iindex).Value = entryvalue 
    Wscript.Echo " Changing [" & entryname & ":" & entryvalue & "]" 

    End If 
    On Error GoTo 0 


End Sub 
0

Pouvez-vous utiliser la collection CustomDocumentProperties pour le classeur Excel approprié à la place? Vous pouvez alors simplement parcourir la collection et modifier la propriété si vous la trouvez. Si ce n'est pas le cas, vous pouvez créer la propriété.

+0

CustomDocumentProperties semble faire partie des objets Office. Le point de dsolefile est qu'il ne vous oblige pas à avoir un bureau installé pour lire et modifier les propriétés. Je ne peux pas l'utiliser –

Questions connexes