【发布时间】:2016-06-08 09:25:18
【问题描述】:
我有一个宏,它可以打开一个带有测试数据的 Excel 文件,对数据执行一些简单的格式化,然后将数据保存为一个新文件(保持最初打开的文件不变)。我得到了一切工作,直到最后一行,我试图关闭我最初打开的工作簿。在尝试关闭原始工作簿之前有一些代码将不同的工作簿变量设置为第一个,然后打开并关闭它?我对代码在做什么有点困惑,但它会关闭用户刚刚保存的新文件,并让最初打开的原始数据文件保持打开状态。下面是我的代码;有人可以更好地解释保存和关闭工作簿时发生的情况吗?
Sub Main()
'
'
'
'Define variables
Dim wBook As Workbook
Dim sBook As String
Dim ActSheet As Worksheet
Dim ActBook As Workbook
Dim CurrentFile As String
Dim NewFileType As String
Dim NewFile As String
'Get workbook filepath
sBook = Application.GetOpenFilename()
If sBook = "False" Then
End
End If
'Open Workbook
Set wBook = Workbooks.Open(sBook)
'Unrelated formatting occurs
'Save workbook as new file
Application.ScreenUpdating = False ' Prevents screen refreshing.
CurrentFile = wBook.FullName
NewFileType = "Excel Files 2007 (*.xlsx), *.xlsx,"
NewFile = Application.GetSaveAsFilename( _
InitialFileName:=NewFileName, _
fileFilter:=NewFileType)
If NewFile <> "" And NewFile <> "False" Then
wBook.SaveAs Filename:=NewFile, _
FileFormat:=xlOpenXMLWorkbook, _
Password:="", _
WriteResPassword:="", _
ReadOnlyRecommended:=False, _
CreateBackup:=False
Set ActBook = wBook
Workbooks.Open CurrentFile
ActBook.Close
End If
Application.ScreenUpdating = True
wBook.Close
End Sub
【问题讨论】:
-
您将
wBook设置为Set ActBook = wBook,然后设置ActBook.Close(关闭原始工作簿)。然后打开另一个工作簿:Workbooks.Open CurrentFile。所以这肯定是在你的代码末尾没有关闭的工作簿吗? -
我真的不明白怎么做的,但是我用宏打开的原始文件最后仍然打开并且未修改。 Cody G. 在下面提供的解决方案虽然有效。只需使用
ActBook删除这三行,然后打开和关闭...