VBA 其他工作簿未正确关闭
Posted
技术标签:
【中文标题】VBA 其他工作簿未正确关闭【英文标题】:VBA other Workbook Doesnt close Properly 【发布时间】:2017-10-24 13:30:15 【问题描述】:您好,我的 VBA 代码不想正确关闭我的原始数据文件。 然后我有一个数据捕获表单,当我点击提交时,打开另一个 Excel 文件,将所有数据复制到其中,应该保存并关闭工作簿。 我的代码如下:
Private Sub submit_Click()
'Open Workbook
If MsgBox("You are about to Submit, Are you sure?" & vbCr & "Please make sure that the OUTCOME box is complete", vbYesNo) = vbNo Then Exit Sub
Dim wb As Workbook, sh As Worksheet
Set wkb = Workbooks.Open("\\ServerName\Reports Folder\Team Name\Manager Name\RAW\RAW QC data.xlsx")
'Make Daily_Tracking_Dataset active
'Determine emptyRow
'Transfer Information
Set wb = Workbooks("RAW QC data.xlsx")
Set sh = wb.Sheets(1)
cAry = Array(Me.QCBX, Me.CallBX, Me.INBX, Me.AgntBX, Me.VoxBX, Me.ClntBX, Me.PolBX, Me.DateBX1, Me.AuditBX1, Me.TextBox7, Me.TextBox8, Me.OUTBX1, Me.Cbx1_1, Me.Cbx1_2, Me.Cbx1_3, Me.Cbx1_4, Me.OUTBX2, Me.Cbx2_1, Me.Cbx2_2, Me.Cbx2_3, Me.OUTBX3, Me.Cbx3_1, Me.Cbx3_2, Me.OUTBX4, Me.Cbx4_1, Me.Cbx4_2, Me.Cbx4_3, Me.OUTBX5, Me.Cbx5_1, Me.Cbx5_2, Me.Cbx5_3, Me.Cbx5_4, Me.Cbx5_5, Me.Cbx5_6, Me.Cbx5_7, Me.Cbx5_8, Me.ACBX, Me.QTBX, Me.QFBX)
With sh
For i = 1 To 39
.Cells(Rows.Count, i).End(xlUp)(2) = cAry(i - 1).Value
Next
End With
'Save the Raw data
wb.Close SaveChanges:=True
End Sub
发生的事情是它看起来正在工作,但是当我尝试提交下一个时,它给了我SAVE AS
窗口
【问题讨论】:
【参考方案1】:您的代码中有wkb
和wb
。可能这不是您想要的。只需尝试在您的代码中将wkb
更改为wb
。这是开始使用 Option Explicit
- What do Option Strict and Option Explicit do? 的好理由
一般来说,像这样简单的事情应该可以工作:
Public Sub TestMe()
'Dim wb As Workbook
Dim wkb As Workbook
Dim sh As Worksheet
Set wkb = Workbooks.Open(ThisWorkbook.Path & "\Testing.xlsx")
'Set wb = Workbooks("Testing.xlsx")
'Put your loop instead of the TEST later:
wb.Worksheets(1).Cells(1, 1) = "TEST"
Application.DisplayAlerts = False
wkb.Save
Application.DisplayAlerts = True
wkb.Close
End Sub
【讨论】:
Set wkb = Workbooks.Open(".....
这行不是打开文件吗?是的,之后使用wbk
而不是将wb
引用为wbk
会更容易。但它应该可以正常工作,不是吗?
wkb
和 wb
完全不同。修改它:) 你没有对wkb
做任何事情。
@Ralph - 没有注意到你不是 OP。
我刚刚对Dim x As Workbook
和Dim y As Workbook
使用Set x = Workbooks.Open(...
进行了测试,然后使用Set y = x
和y.close
。惊喜:它有效。如果我现在将Set y = x
换成Set y = Workbooks(x.Name)
或明确写Set y = Workbooks("RAW QC data.xlsx")
它仍然有效。显然,x
和 y
都成为对同一个 open 文件的引用,因此两者都可以关闭文件(可互换)。因此,我不确定您的代码在哪里提供了任何额外的见解/解决方案。还是我错过了什么? (顺便说一句:只是想在这里了解和学习自己!)
感谢我所做的只是将wbk
更改为wb
删除了wb.Close SaveChanges:=True
并添加了Application.DisplayAlerts = False wkb.Save Application.DisplayAlerts = True wkb.Close
以上是关于VBA 其他工作簿未正确关闭的主要内容,如果未能解决你的问题,请参考以下文章
在模拟器上工作,而不是在设备或其他模拟器上工作。设定的目标是正确的[关闭]