Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 关闭之前打开的外观奇怪的工作簿_Excel_Vba - Fatal编程技术网

Excel 关闭之前打开的外观奇怪的工作簿

Excel 关闭之前打开的外观奇怪的工作簿,excel,vba,Excel,Vba,我正在测试一些代码,它应该在用户完成工作并关闭它时将数据复制到全局跟踪器。当我用一个按钮测试它时,它工作正常,但当我使用BeforeClose事件时,目标Excel打开时为空白,没有功能区、菜单栏,没有粘贴数据,窗口中有一些奇怪的线条可见(见附件)。 它是随机的,有时正常工作,有时不正常。 有人知道为什么会这样吗 这是我的密码: Private Sub Workbook_BeforeClose(Cancel As Boolean) Dim path As String Dim wb

我正在测试一些代码,它应该在用户完成工作并关闭它时将数据复制到全局跟踪器。当我用一个按钮测试它时,它工作正常,但当我使用BeforeClose事件时,目标Excel打开时为空白,没有功能区、菜单栏,没有粘贴数据,窗口中有一些奇怪的线条可见(见附件)。 它是随机的,有时正常工作,有时不正常。 有人知道为什么会这样吗

这是我的密码:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)

 Dim path As String
 Dim wb As Workbook

 Cancel = False
 path = ThisWorkbook.path & "\Test.xlsx"

 Range("A1:F10").Copy

 On Error GoTo Handler
 Workbooks.Open (path)
 On Error GoTo 0

 Set wb = Workbooks("Test")
 Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues
 Application.CutCopyMode = False
'wb.Close False
 MsgBox "OK"

Exit Sub

Handler:
MsgBox "Someone else is saving their data at the moment." & vbNewLine & _
    "Please try in a few seconds"
Cancel = True

End Sub

那条线似乎是一个阴影。如果与普通Excel工作簿的屏幕截图比较,该行是否与功能区底部的位置匹配?很难说。。。当我比较它时,它似乎比缎带窄了一点。就我而言,问题不仅是丢失的色带,而且还有其他丢失的元素,特别是要粘贴的数据。考虑使用应用程序事件而不是工作簿事件。这将使您能够从正在关闭的工作簿中复制所需的数据,让它关闭,然后在事后处理数据。如果您担心数据丢失,请以TXT格式编写日志,其中包含工作簿名称和数据地址,或者以CSV格式存储数据,直到它们被安全地放好。作为替代方案,您可以完全取消关闭过程,处理数据,然后从执行关闭的代码启动新关闭。我认为您不能从工作簿级别执行此操作。@Variatus,您能建议如何修改代码以执行此操作吗?我真的很感激。谢谢。你会在这里找到你需要的指导。请记住,每当在类的管辖范围内关闭任何工作簿时,应用程序的BeforeClose事件都会激发。因此,您需要确保您规定的程序不会在预期工作簿以外的随机工作簿上运行。