2

迅速な修正であると確信しているものに問題があります。「スクリプト ステータス」のカスタム ドキュメント プロパティ フィールドを含む Excel ドキュメントがあります。スクリプト ステータス プロパティは、ドキュメントのダウンロード元のドキュメント ライブラリ内の列から取得されます。私の目標は、ユーザーにフォームをダウンロードさせ、割り当てられたタスクを完了させ、「BeforeSave」マクロを実行して作業をスキャンし、マクロの結果に基づいてそのスクリプト ステータス プロパティを更新することです (つまり、フィールドが欠落している場合、スクリプトは「未完了」などと表示されます)。SharePoint では、これは、未割り当て、割り当て済み、未完了、完了/合格、不合格、再テスト、延期のオプションを備えた選択ドロップダウン ボックスです。プロパティフィールドを更新する方法ではなく、ワークセットをチェックするロジックがあり、正常に動作します。これまでのところ、私が持っているのは単純です:

Application.ThisWorkbook.CustomDocumentProperties.Item("Script Status").Value = "Fail"

実行すると、「無効なプロシージャ コールまたは引数」という行にエラーが表示されます。この行の適切な構文を調べようとしましたが、役に立ちませんでした。どんな助けでも感謝します!

4

3 に答える 3

2

Excel ドキュメントに関連付けられている Sharepoint プロパティは、CustomDocumentProperty でも BuiltInDocumentProperty でもないようです。コードにもう少し手を加えると、Sharepoint フィールドは「ContentTypeProperty」になります。カスタム プロパティの代わりに ContentTypeProperty を使用して元の質問に投稿された同じコードを使用すると、コードは正常に機能しました。

David のコードを参照して、あなたの "プロパティ" が本当にカスタム プロパティであり、コンテンツ タイプではないかどうかを判断してください。それはとても役に立ちました!

于 2013-07-02T12:10:34.500 に答える
1

Sharepoint からのファイルにはいくつかの癖があるかもしれませんが、確かにこれは私がよく知っているものではありませんが、他のスレッドを読むと、これらのファイルにはいくつかの問題があることがわかります。ここでは、そうである場合とそうでない場合があります。

いずれにせよ、私たちはそれを診断しようとすることができ、おそらく問題を解決するでしょう.

コメントで述べたように、名前付きDocumentProperty(「スクリプト ステータス」) がワークブックに存在しない場合、このエラーを再現できます。おそらく、これはタイプミスと同じくらい簡単かもしれません。この関数を使用して、名前付きDocumentPropertyが存在するかどうかをテストできます。

Function CustomPropertyExists(propName As String) As Boolean
    Dim wb As Workbook
    Dim docProp As DocumentProperty
    Dim propExists As Boolean
    Set wb = Application.ThisWorkbook
    For Each docProp In wb.CustomDocumentProperties
        If docProp.Name = propName Then
            propExists = True
            Exit For
        End If
    Next
    CustomPropertyExists = propExists
End Function

これを標準モジュールに入れると、次のようにワークシートから関数を呼び出すことができます。

=CustomPropertyExists("Script Status")名前付きプロパティが見つかったかどうかに応じて、Trueまたはの値を返します。False

サブルーチンから呼び出すことができます。たとえば、次のようになります。

If CustomPropertyExists("Script Status") Then
    MsgBox "Exists!",vbInformation
Else 
    MsgBox "Does not exist", vbCritical
End If
于 2013-07-01T15:38:58.330 に答える
0

これが誰かの役に立つかどうかはわかりませんが、.xlsm ファイルを、カスタム プロパティが設定された SharePoint サイトに保存する作業をしていました。解決策が見つかりませんでしたが、これを使用して整理することができました。

Private Sub SaveToSharePoint()
'set the save location of the document and name
Dim FolderPath As String: FolderPath = "//sharepoint.com/sites/Shared Documents/"
Dim Type As String: Type = "Doc"
Dim CurrentYear As String: CurrentYear = CStr(Year(Date))
Dim FileName As String: FileName = Type & "_" & CurrentYear & ".xlsm"
Dim FullFilePath As String: FullFilePath = FolderPath + FileName

'Creates the initial file and saves it as .xlsm
On Error Resume Next
ThisWorkbook.SaveAs FullFilePath, FileFormat:=52

'Sets the custom properties
ThisWorkbook.ContentTypeProperties("Type").Value = Type
ThisWorkbook.ContentTypeProperties("Year").Value = CurrentYear

'Updates the file
On Error Resume Next
ThisWorkbook.SaveAs FullFilePath, FileFormat:=52 End Sub
于 2015-01-28T13:51:25.803 に答える