Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 一半代码执行时出现Excel自动化错误_Vba_Excel - Fatal编程技术网

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
的值是多少?编辑以回答这两条评论下一步有没有关于错误的
继续
或关于错误的
转到某个标签
语句在这段代码之前进行裁决?没有,我在这段代码中没有任何错误处理