VBA:设计模式触发和中断程序

时间:2017-07-26 17:41:32

标签: vba break mode

有没有人遇到过这个问题?

我正在运行的程序是这样的:

  1. 查找文件夹
  2. 中的文件
  3. 从文件夹
  4. 打开文档
  5. 将表格读入数组
  6. 循环至2或1
  7. 关闭文档,设置=无
  8. 将数组写入电子表格。
  9. 在循环过程中,我打开的文档由于某种原因最终触发了设计模式。这导致我的程序中断退出程序,导致我失去了我的宏所做的进度并重新开始。

    我有什么方法可以避免这种情况发生,或者可能理解为什么?当我打开它们时,我不相信文档本身处于设计模式,只是由于某种原因触发了功能。

    这是我打开文件时的代码:

    For f = LBound(strPaths) To UBound(strPaths)
        Set Files = New Collection
        dirpath = strPaths(f)
        strFile = Dir(dirpath & "*.xls*")     ' Record file into string.
        Do While strFile <> ""
            Files.Add strFile
            strFile = Dir
        Loop
        numCSV = numCSV + Files.count
        For Each strFile In Files
            dirpath = strPaths(f)
            wbkPath = dirpath & strFile
            If InStr(1, wbkPath, "Bulk") > 0 Then GoTo NextFile
            nrow = OpenDoc(wbkPath, wbkCSV)
            If Not nrow <= 1 Then
                scopeArray(k) = PullScope(wbkCSV, wshPalette, strFile, roffset, nrow, x)
                roffset = roffset + nrow
                k = 1 + k
                ReDim Preserve scopeArray(k)
            End IfNextFile:
        Next strFile
    Next f
    
    Public Function OpenDoc(wbkPath, wbkCSV As Workbook) As Long
        Dim r As Integer
    
    ' With workbook still open, process.
        Application.AskToUpdateLinks = False
        Application.DisplayAlerts = False
        Set wbkCSV = Workbooks.Open(wbkPath)
        Application.DisplayAlerts = True
        Application.AskToUpdateLinks = True
      '  On Error GoTo NextDoc
        Set wshTemp = wbkCSV.Worksheets(1)
    
        r = WorksheetFunction.CountA(wshTemp.Columns(6)) - 1
     If r <= 1 Then
        wbkCSV.Close
        Set wbkCSV = Nothing
     End If
    OpenDoc = r
    End Function
    

    真诚地感谢任何回复!

1 个答案:

答案 0 :(得分:0)

所以我想我会为此提供一些更新。

我仍然没有确定确切地导致这种情况的原因,但我认为这可能是我在代码执行期间使用计算机的一个简单事实。

添加以下行可以防止此错误再次发生:

Application.Interactive = False
' Code
Application.Interactive = True

我怀疑使用F5刷新网页浏览器的成瘾可能是罪魁祸首。