Access VBA海量文本文件导入运行时错误3310

Access VBA海量文本文件导入运行时错误3310,vba,ms-access,text,import,Vba,Ms Access,Text,Import,我编写了Access VBA代码,用于导入文本文件。(多个不同的vba模块,指向不同的文件路径。但是,当处理的累积文件达到5500-6000个时,它会停止并给出以下错误: 为了再次开始导入,需要重新启动Access。我已尝试添加“DoEvents”,但这似乎没什么作用。我在网上进行了调查,发现其他人也有同样的问题,但无法找到答案。有人知道如何绕过Access对一次导入文件数量的限制吗 代码摘录:它停在哪里用粗体表示 If FileExists(ImportFileName) = True Th

我编写了Access VBA代码,用于导入文本文件。(多个不同的vba模块,指向不同的文件路径。但是,当处理的累积文件达到5500-6000个时,它会停止并给出以下错误:

为了再次开始导入,需要重新启动Access。我已尝试添加“DoEvents”,但这似乎没什么作用。我在网上进行了调查,发现其他人也有同样的问题,但无法找到答案。有人知道如何绕过Access对一次导入文件数量的限制吗

代码摘录:它停在哪里用粗体表示

If FileExists(ImportFileName) = True Then
    **DoCmd.TransferText acImportDelim, ImportSpecification, ImportTable, ImportPath & ImportFile, False, ""**

Else
    DoCmd.RunSQL "INSERT INTO " & FNFTable & " (FundID, IndexID, FileName) VALUES (" & FundID & ", " & IndexID & ", '" & ImportFile & "');"
    FNFResults = FNFResults + 1
    GoTo NextTimePeriod:
End If

这表明其中一个文件可能有问题。在调用TransferText之前,添加
Debug.Print ImportFileName
。现在重新运行整个过程,当出错时,检查VBA IDE中间窗口中写入的最后一个条目。打开该文本文件并检查其内容。起初,我认为它也仅限于特定的文件,但事实并非如此。在组合程序运行大约6000个文件后,它将在任何文件上随机停止。如果我重新启动access并再次运行出现问题的程序,它将按预期导入所有内容。然后,将循环分解为500或1000个文件。您可能会遇到内存/资源限制。因此,取消初始化/重新初始化两个文件之间的VBA对象批处理。也许我没有正确解释。我有8个不同的子组件。它们根据用户选择的导入内容分别运行。每个子组件根据选择的子组件导入400个文件到4500个文件。在某个时候,子组件A+子组件B+子组件C等将超过此文件限制。请您进一步解释一下关于我可以尝试在SUB之间实现的取消初始化/重新初始化VBA对象?谢谢。进一步研究后,我发现这只是一个访问限制,我无法阻止。但是,我可以围绕它进行编程。我添加了错误处理代码,捕获达到限制(x)的循环以及当时正在运行的程序名。从那里,我添加了一条消息,告诉用户重新启动access。重新启动后,主菜单上会显示一个Resume Import按钮,允许用户单击该按钮,程序将从停止的位置运行。感谢您,Parfait,感谢您的洞察力。这表明其中一个文件可能是issue。就在调用TransferText之前,添加
Debug.Print ImportFileName
。现在重新运行整个过程,当它出错时,检查VBA IDE中间窗口中写入的最后一个条目。打开该文本文件并检查其内容。起初,我认为它也仅限于特定的文件,但事实并非如此。在e组合程序运行大约6000个文件。如果我重新启动access并再次运行出现问题的程序,它会按预期导入所有内容。然后,将循环分解为500或1000个文件的批。您可能会遇到内存/资源限制。因此,在批之间取消初始化/重新初始化VBA对象。也许我没有正确解释.我有8个不同的sub。它们根据用户选择要导入的内容分别运行。每个sub根据选择要运行的sub导入400个文件到4500个文件。在某些情况下,sub A+sub B+sub C等将超过此文件限制。请您详细解释一下取消初始化/重新初始化VBA obj的情况ect,我可以尝试在SUB之间实现?谢谢。经过进一步研究,我发现这只是一个访问限制,我无法阻止。但是,我可以围绕它进行编程。我添加了错误处理代码,捕获达到限制的循环(x)以及当时正在运行的程序名。从那里,我添加了一条消息,告诉用户重新启动access。重新启动后,主菜单上会显示一个“恢复导入”按钮,允许用户单击该按钮,程序将从停止的位置运行。谢谢您,Parfait,感谢您的帮助。