Excel VBA:内存不足错误
我有两本.xlsm工作簿。只有工作簿B在另一个工作簿上运行宏Excel VBA:内存不足错误,excel,vba,Excel,Vba,我有两本.xlsm工作簿。只有工作簿B在另一个工作簿上运行宏 Workbook A: Job Closeout Status.xlsm Workbook B: Weekly Payment Sheet.xlsm 工作簿B有一个数据源为工作簿a的数据透视表。 wkbk B上的宏在打开时刷新透视表 我收到一个内存不足错误。我已经研究过应该将对象设置为零。但是,我无法编辑宏。每次我尝试添加一行代码时,都会出现“内存不足”错误。有谁能帮我优化性能,解决这个“内存不足”的问题吗?谢谢 我还注意到,在Vi
Workbook A: Job Closeout Status.xlsm
Workbook B: Weekly Payment Sheet.xlsm
工作簿B有一个数据源为工作簿a的数据透视表。
wkbk B上的宏在打开时刷新透视表
我收到一个内存不足错误。我已经研究过应该将对象设置为零。但是,我无法编辑宏。每次我尝试添加一行代码时,都会出现“内存不足”错误。有谁能帮我优化性能,解决这个“内存不足”的问题吗?谢谢
我还注意到,在VisualBasics应用程序中,当我只打开wkbk B时,wkbk A会出现在我的项目浏览器中,工作表图标以蓝色突出显示。通常我只看到在project explorer中打开的工作簿
以下是我在工作簿B中的代码:
在此工作簿模块中:
Option Explicit
Private Sub Workbook_Open()
ThisWorkbook.Worksheets("RETENTION").Unprotect
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim wkb As Workbook
On Error Resume Next
If IsFileOpen("S:\ACCOUNTING\Subcontracts\Job Closeout Tracking\Job Closeout Status.xlsm") Then
GoTo Protect
Else
On Error Resume Next
Set wkb = Workbooks.Open(filename:="S:\ACCOUNTING\Subcontracts\Job Closeout Tracking\Job Closeout Status.xlsm")
ThisWorkbook.RefreshAll
wkb.Close SaveChanges:=False
End If
Protect:
ThisWorkbook.Worksheets("RETENTION").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
在单独的模块中:
Function IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Turn error checking off.
filenum = FreeFile() ' Get a free file number.
' Attempt to open the file and lock it.
Open filename For Input Lock Read As #filenum
Close filenum ' Close the file.
errnum = Err ' Save the error number that occurred.
On Error GoTo 0 ' Turn error checking back on.
' Check to see which error occurred.
Select Case errnum
' No error occurred.
' File is NOT already open by another user.
Case 0
IsFileOpen = False
' Error number for "Permission Denied."
' File is already opened by another user.
Case 70
IsFileOpen = True
' Another error occurred.
Case Else
Error errnum
End Select
End Function
我不知道你的代码出了什么问题,但下一步错误恢复中的所有
行都是危险信号。我正在运行32位Excel 2013。代码一直在运行。我认为只需要优化性能/代码。我应该从哪里开始尝试解决这个问题?如果它正在工作,但不再工作,那么您的工作簿和/或项目可能已经损坏。如果您甚至不能编辑宏,则可能会出现这种情况。您可以做一些事情,例如(为了安全起见,复制了所有内容)导出VBA模块并将其重新导入全新的工作簿,然后开始移动数据。也许其他人有另一个想法,但如果没有,谷歌类似“从腐败的VBA项目中恢复”的东西,看看你读到的任何建议是否奏效。@John Coleman我复制了源代码,重命名了它,删除了宏并保存了它。将宏放回原处,并在原处复制到原处。政府似乎已经解决了问题。然后,我从所有内容中删除了下一步的错误恢复。现在我得到运行时错误91,对象变量或未设置块。需要防止这种情况再次发生。有什么想法吗?谢谢。我不知道你的代码出了什么问题,但下一步错误恢复中的所有行都是红色标志。我正在运行32位Excel 2013。代码一直在运行。我认为只需要优化性能/代码。我应该从哪里开始尝试解决这个问题?如果它正在工作,但不再工作,那么您的工作簿和/或项目可能已经损坏。如果您甚至不能编辑宏,则可能会出现这种情况。您可以做一些事情,例如(为了安全起见,复制了所有内容)导出VBA模块并将其重新导入全新的工作簿,然后开始移动数据。也许其他人有另一个想法,但如果没有,谷歌类似“从腐败的VBA项目中恢复”的东西,看看你读到的任何建议是否奏效。@John Coleman我复制了源代码,重命名了它,删除了宏并保存了它。将宏放回原处,并在原处复制到原处。政府似乎已经解决了问题。然后,我从所有内容中删除了下一步的错误恢复。现在我得到运行时错误91,对象变量或未设置块。需要防止这种情况再次发生。有什么想法吗?非常感谢。