2

SharePoint からワークブックをチェックアウトしてからワークブックを開く手順があります。ワークブックに必要なドキュメント プロパティが欠落している場合に実行時エラーが発生することに気付きました。そのため、次のようにエラー トラップを追加しました。

Public Function getWorkbook(bkPath As String) As Workbook

Dim bk As Workbook
Dim response As Boolean

secAutomation = Application.AutomationSecurity

On Error GoTo errHandler

If Workbooks.CanCheckOut(bkPath) Then
    Workbooks.CheckOut bkPath
    Application.AutomationSecurity = msoAutomationSecurityForceDisable
    Application.EnableEvents = False
    Application.DisplayAlerts = False
    Set bk = Workbooks.Open(bkPath, False, False)
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.AutomationSecurity = secAutomation
    If bk Is Nothing Then
        response = dbo_global.setStatus("error", failedToOpen)
    End If
Else
    response = dbo_global.setStatus("error", checkedout)
    Set bk = Nothing
End If
Set getWorkbook = bk
Exit Function

errHandler:
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.AutomationSecurity = secAutomation
If Not bk Is Nothing Then
    bk.Close False
    Set bk = Nothing
End If
response = dbo_global.setStatus("error", checkoutProblem)

End Function

dbo_global.setStatus()アクセスエラーログにエントリを挿入する機能です。

でエラーが発生していますがWorkbooks.CheckOut bkPath、ブロックに移動する代わりにerrHandler、エラー メッセージ ボックスが表示されます。

Run-time error '-2147467259 (80004005)':    
This document cannot be checked in.

errHandlerワークブックが開いている場合は閉じ、チェックアウトを破棄することでエラーを処理したいのですが、コードでエラーをキャッチする方法がわかりません。

編集:それが役立つ場合、これはワークブックの上部に表示される警告メッセージです:

Required Properties
To save to the server, correct the invalid or missing required properties.
4

1 に答える 1

1

ほとんどの場合、Visual Basic Editor の設定がわずかにずれています。Options -> General -> Error Trappingで、確認する必要があります。Break on Unhandled ErrorsそうであればBreak on All Errors、説明した動作が得られます。

ここに画像の説明を入力

于 2013-02-16T22:34:23.323 に答える