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!"
È stato utile?

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à

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top