Vba 一半代码执行时出现Excel自动化错误
我有一个宏,它遍历一个列表,其中每一行都告诉它对一个指定的文件做些什么。为了减少保存-关闭-打开操作的数量,我的列表按文件路径排序(每个文件通常显示在几行中,每行在该文件的不同工作表上工作)。下面的代码处理文件操作Vba 一半代码执行时出现Excel自动化错误,vba,excel,Vba,Excel,我有一个宏,它遍历一个列表,其中每一行都告诉它对一个指定的文件做些什么。为了减少保存-关闭-打开操作的数量,我的列表按文件路径排序(每个文件通常显示在几行中,每行在该文件的不同工作表上工作)。下面的代码处理文件操作 mypath = ThisWorkbook.Worksheets("List").Range("B" & row).Value If mywbk Is Nothing Then Set mywbk = Workbooks.Open(mypath) Else
mypath = ThisWorkbook.Worksheets("List").Range("B" & row).Value
If mywbk Is Nothing Then
Set mywbk = Workbooks.Open(mypath)
Else
If mywbk.FullName = mypath Then
'do nothing
Else
mywbk.Save
mywbk.Close
Set mywbk = Workbooks.Open(mypath)
End If
End If
mywbk
是Workbook
,mypath
是String
。我希望代码能做的是检查mywbk中当前是否存储了任何内容,如果没有,则将其设置为我当前要处理的文件,如果已经存在一些内容,则检查我是否仍要处理该文件(然后无需任何操作),或者是否必须更改该文件(因此我保存并关闭上一个文件,然后打开新文件)
我遇到的问题是运行时错误'-2147221080(800401a8)
,这在我第一次查看这部分代码时就发生了,但只在宏的每一秒运行一次-如果我在错误屏幕上单击End
,然后再次运行,一切正常。然后在下一次运行时,我再次出现错误,以此类推。这种行为的原因是什么?有没有办法解决
编辑-评论后的澄清:
mywbk
是私有变量
如果mywbk.FullName=mypath,则错误发生在
上,错误发生时的值为
如果mywbk
是公共变量,请确保在代码末尾设置mywkb=Nothing
。发生了什么行错误?在出错之前,mywbk.Name
的值是多少?编辑以回答这两条评论下一步有没有关于错误的继续
或关于错误的转到某个标签
语句在这段代码之前进行裁决?没有,我在这段代码中没有任何错误处理