Workbooks.open不返回任何内容

时间:2019-11-11 16:19:51

标签: excel vba

我试图从工作簿中读取一些数据,以便在活动工作表中设置一些值。

Dim wbRegistro As Workbook
Dim wsRisorsaMese As Worksheet
Dim path, sRegistro As String

path = "C:\Users\Marco\Documents\sikelia\finanza agevolata\PON MISE\rendicontazione\"
sRegistro = "ORX.Y_Timesheet_Presenze_Sikelia.xlsm"
On Error Resume Next
Set wbRegistro = Workbooks(sRegistro)
If Err <> 0 Then
    Err = 0
    Set wbRegistro = Workbooks.Open(path & sRegistro)
End If

Workbooks.Open返回Err=0,但变量wbRegistro仍为Nothing,并且工作簿不可访问。

我想这很简单,但是我不知道该怎么解决。

TIA

3 个答案:

答案 0 :(得分:0)

错误9仅在此处出现(Set wbRegistro = Workbooks(sRegistro) 行上的不是,这将是另一个错误):

On Error Resume Next

由于在On Error GoTo 0之后,因此通常应忽略该错误。如果执行中断,则问题不在代码中,而在您的VBIDE选项中。

确保已选择“打破未处理错误”:

VBE options; "General" tab, "Error Trapping" section

确保在End If之后有{{1}},否则“继续执行下一个”对于该过程范围的其余部分仍然有效(并且您当然不希望这样做)。

答案 1 :(得分:0)

我可能遇到了问题:我忘了说代码在isAlways(eqs,'Unknown','false') 内部,而不是Function内部,并且网络上有很多类似的问题。 Sub根本无法在Workbooks.Open内部使用,除非有人知道不同的地方。

答案 2 :(得分:-1)

您为什么要使用变量?如果没有,这将是一种方法:

On Error Resume Next
Set wbRegistro = Workbooks(sRegistro)
If Err <> 0 Then
    Err = 0
    Set wbRegistro = Workbooks.Open("C:\Users\Marco\Documents\sikelia\finanza agevolata\PON MISE\rendicontazione\ORX.Y_Timesheet_Presenze_Sikelia.xlsm")
End If

如果与路径无关,则您可能没有适当的访问权限。