dsolefile - movimentazione quando il valore non esiste (in Excel) Errore
Domanda
Sto cercando di aggiornare le proprietà del documento e creare nuove voci, se non esistono
Tuttavia questo tipo di cosa non funziona
Set objDocProps = DSO.GetDocumentProperties(sfilename:=FileName)
With objDocProps
If .CustomProperties("ABC") Is Nothing Then
'create it here
e se metto un gestore di errori in là essa barfs sia come essere bloccato o che hanno perso il collegamento
errhandler:
Select Case Err.Number
Case -2147220987 ' missing custom property
Debug.Print "missing custom property"
With objDocProps
.CustomProperties("ABC").Value = "banana!"
Soluzione 2
Sembra che ci siano problemi quando si cerca di accedere a CustomProperties per nome.
La soluzione che ho implementato è quello di iterare la raccolta CustomPropery per determinare l'indice della voce (se esiste), quindi utilizzare questo per impostare il valore (o aggiungere uno nuovo se lo fa non)
Passate in: le vostre proprietà personalizzate oggetto, la voce che si desidera compilare e il valore che si desidera popolarlo con
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
Altri suggerimenti
Potrebbe utilizzare la collezione CustomDocumentProperties
per la cartella di lavoro di Excel appropriata, invece? Si potrebbe poi basta scorrere l'insieme e modificare la proprietà se lo trovate. Se non è presente si potrebbe poi creare la proprietà