Vba 宏以记录用户已阅读文档
抱歉,如果这是回答其他地方,但我已经搜索,无法找到任何东西 我被要求在用户阅读并记录我们的政策文档时创建一种跟踪方法。我最初的想法是在政策文档(word)的底部有一个宏按钮,用户单击该按钮确认他们已经阅读了它。这将更新Excel电子表格,然后插入一个新行,捕获用户名、文档名和时间戳 然后,团队可以查看谁读了什么等内容,并在excel行更新后删除这些行。excel当然会保存在一个静态位置 不幸的是,我的VB技能非常低,所以我不知道从哪里开始。这能做到吗?有人能帮忙吗?你可以在下面试试Vba 宏以记录用户已阅读文档,vba,excel,ms-word,Vba,Excel,Ms Word,抱歉,如果这是回答其他地方,但我已经搜索,无法找到任何东西 我被要求在用户阅读并记录我们的政策文档时创建一种跟踪方法。我最初的想法是在政策文档(word)的底部有一个宏按钮,用户单击该按钮确认他们已经阅读了它。这将更新Excel电子表格,然后插入一个新行,捕获用户名、文档名和时间戳 然后,团队可以查看谁读了什么等内容,并在excel行更新后删除这些行。excel当然会保存在一个静态位置 不幸的是,我的VB技能非常低,所以我不知道从哪里开始。这能做到吗?有人能帮忙吗?你可以在下面试试 Sub sa
Sub save_tracking()
Dim XLapp As Excel.Application
Dim xlWB As Excel.Workbook
Set XLapp = New Excel.Application
'turn off extra bits
Screen_ = XLapp.ScreenUpdating
XLapp.ScreenUpdating = False
Event_ = XLapp.EnableEvents
XLapp.EnableEvents = False
Alerts_ = XLapp.DisplayAlerts
XLapp.DisplayAlerts = False
'get username
un = Environ("username")
'open tracking workbook
Set xlWB = XLapp.Workbooks.Open("C:\Test Tacking.xlsx", False, False)
'save information
With xlWB.Sheets(1)
If .Range("A2").Value = "" Then
'no values yet
.Range("A2").Value = un
.Range("B2").Value = XLapp.Name
.Range("C2").Value = Now()
ElseIf .Range("A3").Value = "" Then
'2nd
.Range("A3").Value = un
.Range("B3").Value = XLapp.Name
.Range("C3").Value = Now()
Else
'>2 values
.Range("A2").End(xlDown).Offset(1, 0).Value = un
.Range("B2").End(xlDown).Offset(1, 0).Value = XLapp.Name
.Range("C2").End(xlDown).Offset(1, 0).Value = Now()
End If
End With
'restore settings to previous
XLapp.ScreenUpdating = Screen_
XLapp.EnableEvents = Event_
XLapp.DisplayAlerts = Alerts_
'save/close workbook
xlWB.Close True
XLapp.Quit
Set XLapp = Nothing
End Sub
Function Environ(Expression)
On Error GoTo Err_Environ
Environ = VBA.Environ(Expression)
Exit_Environ:
Exit Function
Err_Environ:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_Environ
End Function
将xlWB的文件名更改为存储跟踪表的位置。在跟踪表中,A1/B1/C1保留为标题,信息将存储在第一张表中
编辑:修改为从其他office程序运行。您需要一个“Microsoft Excel 12.0对象库”的参考。版本可能不同,但应该可以。工具-->引用。获取您可以在下面尝试的参考资料
Sub save_tracking()
Dim XLapp As Excel.Application
Dim xlWB As Excel.Workbook
Set XLapp = New Excel.Application
'turn off extra bits
Screen_ = XLapp.ScreenUpdating
XLapp.ScreenUpdating = False
Event_ = XLapp.EnableEvents
XLapp.EnableEvents = False
Alerts_ = XLapp.DisplayAlerts
XLapp.DisplayAlerts = False
'get username
un = Environ("username")
'open tracking workbook
Set xlWB = XLapp.Workbooks.Open("C:\Test Tacking.xlsx", False, False)
'save information
With xlWB.Sheets(1)
If .Range("A2").Value = "" Then
'no values yet
.Range("A2").Value = un
.Range("B2").Value = XLapp.Name
.Range("C2").Value = Now()
ElseIf .Range("A3").Value = "" Then
'2nd
.Range("A3").Value = un
.Range("B3").Value = XLapp.Name
.Range("C3").Value = Now()
Else
'>2 values
.Range("A2").End(xlDown).Offset(1, 0).Value = un
.Range("B2").End(xlDown).Offset(1, 0).Value = XLapp.Name
.Range("C2").End(xlDown).Offset(1, 0).Value = Now()
End If
End With
'restore settings to previous
XLapp.ScreenUpdating = Screen_
XLapp.EnableEvents = Event_
XLapp.DisplayAlerts = Alerts_
'save/close workbook
xlWB.Close True
XLapp.Quit
Set XLapp = Nothing
End Sub
Function Environ(Expression)
On Error GoTo Err_Environ
Environ = VBA.Environ(Expression)
Exit_Environ:
Exit Function
Err_Environ:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_Environ
End Function
将xlWB的文件名更改为存储跟踪表的位置。在跟踪表中,A1/B1/C1保留为标题,信息将存储在第一张表中
编辑:修改为从其他office程序运行。您需要一个“Microsoft Excel 12.0对象库”的参考。版本可能不同,但应该可以。工具-->引用。让您访问参考资料谢谢,我认为这与我的目标非常接近。但是,我在Dim xlwb as工作簿行上遇到了一个“用户定义类型未定义”错误-您知道这是什么原因吗?您是在Excel中运行此操作的吗?还是另一个程序?从Word文档内部抱歉延迟。我已在答覆中修订守则。请记住,您需要在底部添加编辑中提到的参考,非常感谢-这几乎就在那里了,不过还有最后一件事。捕获的第二列是应用程序名(在本例中为Excel),我希望它捕获运行宏的Word文档的名称?谢谢,我认为这与我想要的非常接近。但是,我在Dim xlwb as工作簿行上遇到了一个“用户定义类型未定义”错误-您知道这是什么原因吗?您是在Excel中运行此操作的吗?还是另一个程序?从Word文档内部抱歉延迟。我已在答覆中修订守则。请记住,您需要在底部添加编辑中提到的参考,非常感谢-这几乎就在那里了,不过还有最后一件事。捕获的第二列是应用程序名(在本例中为Excel),我希望它捕获运行宏的Word文档的名称?