2009-04-03 13 views
0

私は、彼らがdsolefile - (Excelで)エラー値が存在しない場合の取り扱い

存在しない場合は、ドキュメントのプロパティを更新し、新しいエントリを作成しようとしているが 事のこのタイプは

を動作しません。
Set objDocProps = DSO.GetDocumentProperties(sfilename:=FileName) 

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

と私はどちらかがロックされているか、接続

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

答えて

0

カスタムプロパティに名前でアクセスしようとすると問題が発生するようです。

私が実装したソリューションは、値を設定(またはそうでない場合は、新しいものを追加)し、これを使用し、その後、(存在する場合)の項目のインデックスを決定するために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

を失ったとして、それがbarfs そこにエラーハンドラを置く場合は、使用することができます適切なExcelブックのCustomDocumentPropertiesコレクションを代わりに使用しますか?コレクションを繰り返して、見つけたらプロパティを編集することができます。存在しない場合は、プロパティを作成することができます。

+0

CustomDocumentPropertiesはOfficeオブジェクトの一部であるようです。 dsolefileのポイントは、プロパティを読み込んで修正するためにオフィスをインストールする必要はないということです。私はそれを使用することはできません –

関連する問題