我有一個Microsoft Access中的程式。我有 VBS 腳本檔案來自動化 SAP GUI 螢屏("事務")。在 Access 中使用 VBA 打開這些不同的 VBS 腳本檔案,使用 WScript.Shell 物件并在 SAP 系統中執行事務。
現在,有時在運行事務時出現錯誤,然后腳本停止。我在每個VBS腳本檔案中寫了錯誤處理程式,如下:
If Err.Number <> 0 Then>
MsgBox ("It failed")
'關閉SAP會話。
session.findById("wnd[0]").Close
結束 If
Sub ShowError(strMessage)
WScript.Echo strMessage
WScript.Echo Err.Number & " Srce: " & Err.Source & " Desc: " & Err.Description
清除
End Sub
現在我想把這個錯誤號碼(Err.Number)或腳本中出現錯誤的一些資訊發送到活動的Access資料庫中。
我怎樣做呢?
我試著這樣做,但它給我一個錯誤,說資料庫被鎖定了!
我試著這樣做,但它給我一個錯誤,說資料庫被鎖定了!
dim accessApp
set accessApp = createObject("Access.Application"/span>)
accessApp.visible = true
accessApp.OpenCurrentDataBase("C:path.accdb")
我的真正目標是,只要在SAP系統中執行每個VBS檔案后出現錯誤,那么我就會在Access中獲得錯誤資訊,然后使用VBA來檢測,并告訴程式再次執行VBS檔案。
任何線索都將是巨大的幫助!
uj5u.com熱心網友回復:
你可以使用ScriptControl(僅32位)直接執行它們,而不是通過cscript運行它們--這將讓你在Access中用標準的On Error直接捕獲錯誤(同時允許你捕獲一個回傳值)。
示例.VBS檔案:
function DoWork
'//做一些作業。
msgbox 1
'//錯誤
x = 100/ 0
DoWork = "OK"/span>
end 函式
VBA:
Sub Foo()
Dim vbsCode As String, result As Variant
'//加載vbs原始碼。
打開"x.vbs" For Input As #1
vbsCode = Input$(LOF(1), 1)
關閉 #1
On Error GoTo ERR_VBS
With CreateObject("ScriptControl"/span>)
.Language = "VBScript" "VBScript"
.AddCode vbsCode
結果 = .Run("DoWork")
結束 與
Exit Sub
ERR_VBS:
MsgBox Err.Description
結束 Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/307751.html
標籤:
上一篇:使用jquery從表中洗掉tr
