我有一个用于执行测验的共享宏启用工作簿。我可以选择配置可以借助计算机名称访问测验的用户。一切都很好。但是,我想介绍一个功能来记录工作簿中的主要内容。用户不会手动输入任何内容。所有条目都是使用用户表单制作的。
我创建了一个sub,每次用户执行我需要捕获的操作时都会运行。当单个用户处于活动状态时,代码就像魅力一样。当多个用户同时访问该文件时,会出现此问题。
问题是,用户会在关闭工作表时显示选择要获胜的提示。我不希望这种情况发生。无论如何,可以删除提示并保存所有更改。
是否有任何解决方法。下面是我现在的代码。
Sub Actions()
QA_Quiz_Master.Save
Application.ScreenUpdating = False
UN = Evaluate("=UserNameWindows()")
QuizN = Sheet4.Range("F2").Value
totlog = Log.Range("A1048576").End(xlUp).Row + 1
Select Case Action
Case "Open"
Log.Range("C" & totlog).Value = "Accessed"
Case "Start"
Log.Range("C" & totlog).Value = "Started Quiz"
Case "Submit"
Log.Range("C" & totlog).Value = "Submitted Quiz"
Case "AdminContact"
Log.Range("C" & totlog).Value = "Contacted Admin"
Case "AccessRequest"
Log.Range("C" & totlog).Value = "Sent Access Request"
Case "Publish"
Log.Range("C" & totlog).Value = "Published Quiz"
Case "Republish"
Log.Range("C" & totlog).Value = "Republished Quiz"
Case "Withdraw"
Log.Range("C" & totlog).Value = "Withdrew Quiz"
Case "AnsPublish"
Log.Range("C" & totlog).Value = "Published Answers"
End Select
Log.Range("A" & totlog).Value = UN
Log.Range("B" & totlog).Value = QuizN
Log.Range("D" & totlog).Value = Now()
Log.Columns("A:D").EntireColumn.AutoFit
Application.DisplayAlerts = False
QA_Quiz_Master.Save
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:5)
If ActiveWorkbook.MultiUserEditing Then
QA_Quiz_Master.AcceptAllChanges
QA_Quiz_Master.Save
End If
答案 1 :(得分:1)
将工作簿设置为“共享”时,请查看“高级”选项卡。默认情况下,它会在保存文件时更新更改,但您可以选择让它每隔x分钟自动更新更改。您还可以选择是否希望Excel询问哪些更改获胜,或者您是否要自动保存新更改。
答案 2 :(得分:0)
共享工作簿是一场噩梦!人们应该总是避免使用它们。几年前,当我作为Ops经理工作时,我意识到了这一点。我希望我的经理们在一天结束时更新共享报告并相信我这是一场灾难。
这是另一种选择。
使用Excel Userform作为前端(即如果需要使用Excel)并使用Access数据库作为后端。如果Excel不是问题,那么将所有内容移植到MS Access。我看到你在这里进行测验。 MS Access是一个更好的选择。
如果你想追求上述想法,请告诉我,我可以详细解释:)
我用来收集数据的其他选择是在INTRANET上显示一个网页并将结果存储在Access / SQL数据库中。