Vba 在将活动用户数据输入工作表之前,如何使用其他人的更改更新共享工作簿?
我有一个共享的启用宏的工作簿,用于进行测验。我可以选择配置用户,这些用户可以借助计算机名访问测验。一切正常。不过,我想介绍一个功能,用于记录工作簿中完成的主要工作。用户不在单元格中手动输入任何内容。所有条目都使用userforms创建 我制作了一个sub,每当用户执行我需要捕获的操作时,它都会运行。当单个用户处于活动状态时,代码就像一个符咒。当多个用户同时访问该文件时,就会出现此问题 问题是,在关闭工作表时,会提示用户选择要赢得的更改。我不想发生这种事。是否存在可以删除提示并保存所有更改的方法 有什么解决办法吗。下面是我现在拥有的代码Vba 在将活动用户数据输入工作表之前,如何使用其他人的更改更新共享工作簿?,vba,excel,Vba,Excel,我有一个共享的启用宏的工作簿,用于进行测验。我可以选择配置用户,这些用户可以借助计算机名访问测验。一切正常。不过,我想介绍一个功能,用于记录工作簿中完成的主要工作。用户不在单元格中手动输入任何内容。所有条目都使用userforms创建 我制作了一个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
共享工作簿是一场噩梦!人们应该总是避免使用它们。几年前,当我还是一名运营经理时,我意识到了这一点。我希望我的经理在一天结束时更新一份共享报告,相信我,这是一场灾难 这里有一个替代方案 使用Excel Userform作为前端(即,如果需要使用Excel),使用Access数据库作为后端。如果Excel不是问题,则将所有内容移植到MS Access。我看到你在这里进行测验。MS Access在这里是一个更好的选择 如果你想实现上述想法,请务必让我知道,我可以详细解释:)
我用来收集数据的其他方法是在INTRANET上显示网页,并将结果存储在Access/SQL数据库中。将工作簿设置为共享时,请查看“高级”选项卡。默认情况下,它会在保存文件时更新更改,但您可以选择让它每x分钟自动更新一次更改。您还可以选择是希望Excel询问哪些更改成功,还是希望自动保存新更改。经过一些研究,我自己解决了这个问题。我只需要在子脚本的开头添加以下代码
If ActiveWorkbook.MultiUserEditing Then
QA_Quiz_Master.AcceptAllChanges
QA_Quiz_Master.Save
End If
这个关键的句子毫无意义:“用户在关闭工作表时会看到一个提示,提示用户选择要赢得的更改”。什么是“哪种变化会赢”呢?您在windows中看到的提示是否表示文件正在使用?或者是您的程序提示显示了一些关于“获胜”的消息?@jdh:这是一个提示,表示Excel是否应该接受单元格中您的值或其他用户的值。我也知道共享工作簿是一场噩梦。在我的例子中,所有的功能都很好。唯一的问题是我在这里描述的问题。谢谢你的支持和建议。我不知道MS Access。不过,我一定会努力学习。不幸的是,如果最后一个用户选择。。。因此提出了上述建议。