请帮助...我已成功从Access 2000升级到2010然后再到2016而没有编译错误但是我在VB代码中的表单中有一个exe文件,它不再运行或发送错误信息。该项目是一个地磅,并且已经在2000年的访问中运行了15年或更长时间,并对设计进行了许多更改,其中exe文件捕获了地磅和信号中的数据。框并将其发送到我的表单。此exe不再适用于Access 2010(升级期间的程序之间)或Access 2016中。这对项目至关重要,我不再拥有VB中的原始代码或计算机上的VB副本,尽管我确实有复制到原始程序员留下的文本文件中。任何人都可以告诉我为什么Access 2016不承认这个exe。是否需要点击参考?我迷路了。
代码是
Private Sub Form_Load()
On Error GoTo Err_Form1
Select Case strDocName
Case "GetGrossWeight"
Set objFrmCtrl = Forms!ConsignmentsIN.GrossWeight
Warning.Caption = "Get Gross Weight In"
Case "GetTareWeight"
Set objFrmCtrl = Forms!ConsignmentsContractIN.TareWeight
Warning.Caption = "Get Tare Weight In"
Case "GetGrossWeightcontract"
Set objFrmCtrl = Forms!ConsignmentsContract.GrossWeight
Warning.Caption = "Get Gross Weight In"
Case "GetTareWeight"
Set objFrmCtrl = Forms!ConsignmentsContract.TareWeight
Warning.Caption = "Get Tare Weight In"
End Select
OpenEXE
Exit_Form2:
Exit Sub
Err_Form1:
MsgBox Error$
Resume Exit_Form2
End Sub
Private Sub OpenEXE()
On Error Resume Next
GrossValue = Shell("c:\weighbr\auto\Weight.exe", 6)
If Err.Number = 53 And GrossValue = 0 Then
MsgBox "Can't find program 'Weight.exe'", vbInformation, "Alert"
End If
' ...
End Sub
答案 0 :(得分:0)
如果成功,运行可执行程序并返回表示程序任务ID的Variant(Double),否则返回零。
您的代码获得task ID
,而不是执行.exe程序的结果(如果nothng else则阻止执行)。因此,在任何情况下,您都不应期望获得此程序生成的值。
您应该使用调试工具进入此Sub
并实际弄清楚它的用途。
检查Alternative to Call Shell() ? (2000)是否可以帮助您,以及Access 2000 to 2002 (Shell command)。
似乎Shell函数可能已经改变了很久以前。