VBA代码不稳定
它开始于本周一,当我完成代码时,代码的目的是从特定文件夹中的特定工作表中从该文件夹中的所有电子表格中提取数据 但就在昨天晚上,每当我按下“运行”按钮时,他就开始破坏excel电子表格 知道为什么吗VBA代码不稳定,vba,excel,Vba,Excel,它开始于本周一,当我完成代码时,代码的目的是从特定文件夹中的特定工作表中从该文件夹中的所有电子表格中提取数据 但就在昨天晚上,每当我按下“运行”按钮时,他就开始破坏excel电子表格 知道为什么吗 Option Explicit Sub ImportSheet() Dim i As Integer Dim SourceFolder As String Dim FileList As Variant Dim GrabSheet As String Dim
Option Explicit
Sub ImportSheet()
Dim i As Integer
Dim SourceFolder As String
Dim FileList As Variant
Dim GrabSheet As String
Dim FileType As String
Dim ActWorkBk As String
Dim ImpWorkBk As String
Dim NoImport As Boolean
Application.EnableEvents = False
SourceFolder = "C:\Users\Jarryd.Ward\Desktop\Test\"
FileType = "*.xlsx"
GrabSheet = "Summary"
FileList = ListFiles(SourceFolder & "/" & FileType)
Application.ScreenUpdating = False
ActWorkBk = ActiveWorkbook.Name
NoImport = False
For i = 1 To UBound(FileList)
Workbooks.Open (SourceFolder & "\" & FileList(i))
ImpWorkBk = ActiveWorkbook.Name
On Error Resume Next
ActiveWorkbook.Sheets(GrabSheet).Select
If Err > 0 Then
NoImport = True
GoTo nxt
End If
Err.Clear
On Error GoTo 0
ActiveWorkbook.Sheets(GrabSheet).Copy After:=Workbooks(ActWorkBk).Sheets(Workbooks(ActWorkBk).Sheets.Count)
ActiveSheet.Name = ImpWorkBk
On Error Resume Next
ActiveSheet.Name = FileList(i) & " - " & GrabSheet
Err.Clear
On Error GoTo 0
nxt:
Workbooks(ImpWorkBk).Activate
Application.DisplayAlerts = False
ActiveWorkbook.Saved = True
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True
Workbooks(ActWorkBk).Activate
Next i
Application.ScreenUpdating = True
End Sub
尝试以这种方式打开和关闭文件,看看是否有帮助。它应该尽量减少激活这个或那个的调用。通过变量而不是activesheet关闭将确保您的代码不会意外地试图关闭主工作簿
Sub testOpen()
Dim manyWBs As Workbook
Dim myWB As Workbook
Set myWB = ThisWorkbook
For Each file In folder
Set manyWBs = Workbooks.Open("C:\temp\filename")
' do events.......
manyWBs.Worksheets("Sheet1").Range("A1:B13").Copy _
Destination:=myWB.Worksheets("Sheet1").Range("A1:b13")
manyWBs.Close
Set manyWBs = Nothing
Next file
Set myWB = Nothing
End Sub
依赖Active工作簿/工作表并不理想,您是否尝试过创建工作簿/工作表对象并显式设置它们?发生了什么错误?完全崩溃?运行宏时出现VB错误?您是否尝试过使用F8单步执行代码,以至少查看什么在工作?而且,这一点有点模糊。您能更具体地说明正在发生的事情吗?如果您在发布之前对代码进行了广泛的编辑,您可能需要考虑使用RibbonCommand之类的工具来清理您的项目。由于VBA本身不会清理,因此可能会遇到代码损坏的实例。坦白地说,我不知道为什么或者如何发生这种情况,但是我在多个大型VBA项目中遇到了这个问题,自从我开始用RC清理它们以来,这个问题已经得到了解决。这里有一个链接:。但这并不是不删除ActiveWorkbook和Activesheet引用的借口。嗨,伙计们,首先,谢谢你们的回复。我将详细说明。我必须创建一个宏,指向每天保存大量电子表格的文件夹,我希望复制每个电子表格中的第一张表格并将其粘贴到主工作簿中,我希望这些表格在主工作簿中滚动,也就是说,我希望第一份表格副本粘贴到主工作簿中的第一张表格上,第二张要粘贴在第二张纸上,依此类推,这就是我所说的卷。我遇到的问题是,每当我运行程序时,我的excel就会崩溃并停止工作。由于我所在的公司和他们的网站限制,我无法下载ribbon commander,可以请某人以正确的权限为我尝试下载。