2009-04-03 1 views
0

Я пытаюсь обновить свойство документа и создавать новые записи, если они не существуютdsolefile - обработка ошибок при значении не существует (в Excel)

Однако такого рода вещь не работает

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

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

и если я ставлю обработчик ошибок там он barfs или как быть запертым или потеряв связь

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

ответ

0

При попытке доступа к CustomProperties по имени возникают проблемы.

Решение Я выполнил это перебирать коллекцию CustomPropery, чтобы определить индекс элемента (если она существует), а затем использовать это, чтобы установить значение (или добавьте новый, если он не делает)

Перейдите: ваш объект пользовательских свойств, запись, которую вы хотите заполнить, и значение, которое вы хотите заполнить,

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

Не могли бы вы использовать вместо CustomDocumentProperties коллекции для соответствующей книги Excel? Затем вы можете просто перебирать коллекцию и редактировать свойство, если найдете его. Если он отсутствует, вы можете создать свойство

+0

CustomDocumentProperties, как представляется, является частью объектов Office. Точка dsolefile заключается в том, что она не требует, чтобы ваш офис был установлен для чтения и изменения свойств. Я не могу его использовать –

Смежные вопросы