我有一个文件,当它打开Workbook_Open事件时,它将运行下面的代码。除了一行代码,其他所有内容似乎都正常运行。状态为wb.Close savechanges:= False的代码行未执行所需的操作。
如果我立即从Visual Basic编辑器中自己触发此事件,它将运行,然后此行代码起作用。
如果我将文件保存在硬盘上,这似乎不是问题。仅当我将文件保存在OneDrive上时,它才会执行此操作。我不是从Excel在线运行此程序。我正在Excel应用程序中运行它,并从OneDrive打开文件。
Private Sub Workbook_Open()
Dim wb As Workbook: Set wb = ThisWorkbook
Application.ScreenUpdating = False
'Pull User_Name
Range("U_Nm").Value = Application.UserName
'Pull Serial Number from Computer
Dim fsObj As Object
Dim drv As Object
Set fsObj = CreateObject("Scripting.FileSystemObject")
Set drv = fsObj.Drives("C")
Range("SN").Value = Left(Hex(drv.SerialNumber), 4) _
& "-" & Right(Hex(drv.SerialNumber), 4)
Range("Current_Date").Value = Date
'Sheets("Security").Visible = xlSheetVeryHidden
Sheets("Security").Visible = True
'**********CHECK CURRENT VALUES FIRST...IF PASSES THEN PASS...IF IT DOESN'T PASS THEN UPDATE...IF NO INTERNET CONNECTION REQUEST THEY CONNECT TO INTERNET TO CONNECT**********
If Range("Full_Validation").Value <> "Valid" Then
'you must be connected to the internet to proceed
Sheets("Security").Range("Licensing").ListObject.QueryTable.Refresh BackgroundQuery:=False
ActiveSheet.Calculate
If Range("User_Validation").Value <> "Valid" Then
Set objShell = CreateObject("Wscript.Shell")
intMessage = MsgBox("You need to register with Doug & Mark!" & vbCr _
& vbCr _
& "Click 'Yes' below to submit your registration information. You will be notified when your registration is complete." & vbCr _
& vbCr _
& "The information below will be required to complete the registration form." & vbCr _
& vbCr _
& "User Name: " & Application.UserName & vbCr _
& "Computer: " & Range("SN").Value & vbCr _
& "Excel Version: " & Application.Version & " running on " & Application.OperatingSystem, vbYesNo, "Invalid User!")
If intMessage = vbYes Then
objShell.Run ("https://forms.gle/xjB7yA2ehHfU6xoV6")
Else
'Wscript.Quit
End If
MsgBox "The information below is required to complete the registration form." & vbCr _
& vbCr _
& "User Name: " & Application.UserName & vbCr _
& "Computer: " & Range("SN").Value & vbCr _
& "Excel Version: " & Application.Version & " running on " & Application.OperatingSystem, vbInformation, "Invalid User!"
wb.Close savechanges:=False
ElseIf Range("SN_Validation").Value <> "Valid" Then
Set objShell = CreateObject("Wscript.Shell")
intMessage = MsgBox("You need to register with Doug & Mark!" & vbCr _
& vbCr _
& "Click 'Yes' below to submit your registration information. You will be notified when your registration is complete." & vbCr _
& vbCr _
& "The information below will be required to complete the registration form." & vbCr _
& vbCr _
& "User Name: " & Application.UserName & vbCr _
& "Computer: " & Range("SN").Value & vbCr _
& "Excel Version: " & Application.Version & " running on " & Application.OperatingSystem & "!", vbYesNo, "Invalid License!")
If intMessage = vbYes Then
objShell.Run ("https://forms.gle/xjB7yA2ehHfU6xoV6")
Else
'Wscript.Quit
End If
MsgBox "The information below is required to complete the registration form." & vbCr _
& vbCr _
& "User Name: " & Application.UserName & vbCr _
& "Computer: " & Range("SN").Value & vbCr _
& "Excel Version: " & Application.Version & " running on " & Application.OperatingSystem & "!", vbInformation, "Invalid User!"
wb.Close savechanges:=False
ElseIf Range("Expiry_Validation").Value <> "Valid" Then
Set objShell = CreateObject("Wscript.Shell")
intMessage = MsgBox("Your Investment Calculator subscription has Expired!" & vbCr _
& vbCr _
& "You will need to renew your subscription to the Investment Calculator." & vbCr _
& vbCr _
& "Click 'Yes' to renew your subscription now.", _
vbYesNo, "Subscription Renewal")
If intMessage = vbYes Then
objShell.Run ("https://www.sltrib.com/sports/byu-cougars/")
Else
'Wscript.Quit
End If
wb.Close savechanges:=False
End If
'Sheets("Security").VeryHidden = True
Application.ScreenUpdating = True
End If
If Range("Expiry_Date").Value - 5 <= Date Then
Set objShell = CreateObject("Wscript.Shell")
If Range("Expiry_Date").Value - Date = 0 Then
intMessage = MsgBox("Your Investment Calculator subscription will expire Today!" & vbCr _
& vbCr _
& "You will need to renew your subscription to the Investment Calculator." & vbCr _
& vbCr _
& "Click 'Yes' to renew your subscription now.", _
vbYesNo, "Subscription Renewal")
ElseIf Range("Expiry_Date").Value - Date = 1 Then
intMessage = MsgBox("Your Investment Calculator subscription will expire in " & Range("Expiry_Date").Value - Date & " day!" & vbCr _
& vbCr _
& "You will need to renew your subscription to the Investment Calculator." & vbCr _
& vbCr _
& "Click 'Yes' to renew your subscription now.", _
vbYesNo, "Subscription Renewal")
ElseIf Range("Expiry_Date").Value - Date > 0 Then
intMessage = MsgBox("Your Investment Calculator subscription will expire in " & Range("Expiry_Date").Value - Date & " days!" & vbCr _
& vbCr _
& "You will need to renew your subscription to the Investment Calculator." & vbCr _
& vbCr _
& "Click 'Yes' to renew your subscription now.", _
vbYesNo, "Subscription Renewal")
End If
If intMessage = vbYes Then
objShell.Run ("https://www.sltrib.com/sports/byu-cougars/")
End If
End If
If Range("Full_Validation").Value = "Invalid" Then
ThisWorkbook.Close savechanges:=False
End If
Application.ScreenUpdating = True
'Range("U_Nm").ClearContents
'Range("SN").ClearContents
End Sub
我期望与运行此行代码时文件将关闭的行为相同。当我将其放在硬盘驱动器上时,它可以工作;如果手动触发事件,它也可以运行。但是,如果它在OneDrive上并通过Workbook_Open事件自动运行,则无法使用。