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

时间:2017-06-08 09:55:52

标签: excel vba excel-vba

我有一些代码用于打开xlsm工作簿,从中复制一些数据并使用代码将其粘贴到工作簿中。两个工作簿都受密码保护,代码受密码保护。我有一些代码设置为在保存,打开和关闭之前运行,这会锁定工作簿。

所以问题是代码在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   

End Sub

2 个答案:

答案 0 :(得分:3)

除了代码停止之外,我可以看到你的代码有些问题。

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

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

您复制范围的行使用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")应该在工作簿打开时停止任何代码触发。

答案 1 :(得分:0)

但如果涉及到 Shift 键,即使是 Darren Bartrup-Cook 的其他好答案也不够! 2005 年 XL 中的一个错误的痕迹!在击键组合中使用 Shift 键运行宏将导致在目标工作簿打开后停止执行。例如,CTRL + SHIFT + q 运行宏将不起作用; CTRL + q 会。