工作簿打开后Vba代码停止。 没有错误

我有一些代码是打开一个xlsm工作簿,从中复制一些数据,并将其粘贴到工作簿中的代码。 两个工作簿都受密码保护,密码保护。 我有一些代码被设置为保存之前运行,打开和closureslocking工作簿。

所以问题是代码停止没有错误后工作簿打开vba如下所示。 我认为这与shift键有关,这是我用open方法在网上看到的一个问题,但我修改了代码来解决这个问题,问题仍然存在。 然后我尝试删除打开的工作簿上打开的代码,它的工作。 为什么是这样? 我已经运行了代码,就像之前的代码打开的工作簿,它工作得很好。

我正在使用Excel 2013。

Sub User_Update() Application.ScreenUpdating = False Dim strCurrentProgram As String Dim MainProgramName As String Dim strLocation As String strLocation = "X:\Produktionsmesstechnik\Gehaeuse_Freigabe\" strCurrentProgram = Dir(strLocation & "*.xlsm") Do While strCurrentProgram <> "" If InStr(strCurrentProgram, "Gehäuse Freigabe Program Ver") = 1 Then If MainProgramName = "" Then MainProgramName = strCurrentProgram ElseIf CInt(Mid(MainProgramName, 29, 3)) < CInt(Mid(strCurrentProgram, 29, 3)) Then MainProgramName = strCurrentProgram End If End If strCurrentProgram = Dir Loop Workbooks.Open Filename:=strLocation & MainProgramName <<<< CODE STOPS HERE ActiveWorkbook.Sheets("Users").Range(Cells(4, 1), Cells(100, 11)).Copy Call UserPassword_Unlock ThisWorkbook.Sheets("Users").Range("A4").Paste ThisWorkbook.Save Workbooks(MainProgramName).Close Call UserPassword_Lock 

结束小组

除了停止代码之外,我还可以看到代码有两处错误。

由于其他工作簿中的代码打开时,代码可能会停止,因此需要停止。

我看到的其他问题是,您不是用variables引用新打开的工作簿,而是使用ActiveWorkbook ,这可能并不总是正确的。

您复制范围的行将使用“ Users作为范围参考,但单元格引用正在使用当前活动的工作表。

在你做循环后,我会添加下面的代码:

 Dim wrkBk As Workbook Application.EnableEvents = False Set wrkBk = Workbooks.Open(strLocation & MainProgramName) Call UserPassword_Unlock With wrkBk.Worksheets("Users") .Range(.Cells(4, 1), .Cells(100, 11)).Copy _ Destination:=ThisWorkbook.Worksheets("Users").Range("A4") End With ThisWorkbook.Save wrkBk.Close SaveChanges:=False Call UserPassword_Lock Application.EnableEvents = True 

注意我使用wrkBk来引用新打开的工作簿。 复制和粘贴缩短为一行,每个单元格和范围引用使用With wrkbk.Worksheets("Users")完全限定。
Application.EnableEvents = False应该在工作簿打开时停止任何代码触发。