从 SharePoint 模板将动态用户名添加到 Excel 页脚

Temp mail SuperHeros
从 SharePoint 模板将动态用户名添加到 Excel 页脚
从 SharePoint 模板将动态用户名添加到 Excel 页脚

跟踪 SharePoint 链接的 Excel 模板中的用户活动

想象一下一个繁忙的办公室,其中多个用户访问同一个 SharePoint 模板来提交表单。 🖥️ 当审核员需要确定谁填写并提交了特定表格时,就会出现挑战。虽然 SharePoint 将此信息记录在“创建者”列下,但仍无法满足在 Excel 工作表页脚中打印包含用户姓名的硬拷贝的需求。

此任务变得更加棘手,因为默认的 VBA 函数如下 应用程序.用户名环境(“用户名”) 通常指向原始模板创建者或本地计算机用户,而不是编辑表单的实际用户。因此,找到一种可靠的方法来动态插入正确的用户名变得至关重要。

在现实场景中,这种差异可能会导致审核和跟踪不准确。例如,在我之前的角色中,我们遇到了一个问题,外部承包商填写的表格总是在打印输出中显示管理员的用户名,这在审核期间造成了严重的混乱。

本文深入探讨了如何使用 VBA、SharePoint 集成和一些智能调整来绕过这些障碍。最后,您将获得一个实用的解决方案,确保每个打印的表单正确反映提交该表单的个人用户。让我们深入了解一下! 🔍

命令 使用示例
ActiveSheet.PageSetup.LeftFooter 用于自定义 Excel 中活动工作表的页脚。在这种情况下,它会动态地将用户名和日期插入页脚中。
ListObjects.Add 在工作表和外部数据源(例如 SharePoint 文档库)之间创建连接,以获取“创建者”字段等元数据。
CreateObject("MSXML2.XMLHTTP") 初始化用于进行 API 调用的 HTTP 请求对象。在本例中,它从 SharePoint REST API 检索元数据。
InStr 查找字符串中子字符串的位置。此处,它用于定位来自 SharePoint API 的 JSON 响应中的“创建者”字段。
Mid 根据起始位置和长度从字符串中提取子字符串。用于解析 SharePoint API 的 JSON 响应中的用户名。
BuiltinDocumentProperties 访问 Excel 工作簿的元数据属性(例如“Creator”属性)以动态识别保存文档的用户。
Range("A1") 指定用于放置从外部源检索的数据(例如 SharePoint 元数据)的起始单元格。
On Error Resume Next 即使发生错误,也允许代码继续执行,此处用于防止元数据获取期间崩溃。
responseText 从 API 调用中提取 HTTP 响应的正文。在本例中,它保存 SharePoint REST API 返回的 JSON 数据。
ParseJSONForCreator 用于从 JSON 响应字符串中提取“creator”字段值的自定义函数。

使用动态 SharePoint 用户名自定义 Excel 页脚

提出的解决方案旨在动态获取并显示 SharePoint“创造者” Excel 工作表页脚中的用户名。当多个用户基于 SharePoint 中存储的共享模板提交表单并且审核员需要明确的归属时,就会出现此要求。第一个脚本利用 Excel 的本机 页面设置 动态自定义页脚的功能。通过将 VBA 方法与 SharePoint 元数据访问相结合,此脚本可确保页脚反映填写表单的用户的用户名,而不是原始创建者的用户名。

例如,第一个解决方案利用 列表对象.添加 建立与 SharePoint 文档库的实时连接。此命令将元数据提取到工作簿中,从而可以迭代行并提取“创建者”字段。想象一下一个部门提交合规表格——每份提交的页脚都会清楚地识别负责的员工,从而消除审计歧义。此方法可确保灵活性并防止在识别表单贡献者时进行人工干预。 🚀

第二种方法利用 SharePoint 的 REST API。通过使用 CreateObject("MSXML2.XMLHTTP") 命令后,脚本发起HTTP请求,直接获取元数据。此方法在 SharePoint 库复杂或包含大量字段的环境中特别有用。使用类似函数解析 JSON 响应 内斯特 允许精确提取“创建者”字段。在我过去的角色中,类似的脚本简化了表单跟踪,每月节省了数小时的手动核对时间。 🖋️

最终脚本集成了 Office 365 属性,利用 内置文档属性 命令直接访问工作簿的元数据。此脚本最适合广泛使用 Office 365 并需要没有 REST API 复杂性的轻量级解决方案的组织。每个脚本都具有模块化功能,使其可重用于其他 SharePoint 集成工作流。例如,您可以调整它们以包含提交时间戳甚至部门名称,从而进一步增强其审计实用性。

解决方案 1:通过 SharePoint 元数据提取用户名

使用 VBA 从 SharePoint 元数据动态获取“创建者”字段并将其添加到 Excel 页脚。

Sub AddUsernameFromSharePoint()
    Dim ws As Worksheet
    Dim sharePointUsername As String
    Dim listObj As Object
    Dim spURL As String
    Dim row As Object
    On Error Resume Next
    ' Set your SharePoint site and library path here
    spURL = "https://your-sharepoint-site/documents/"
    Set ws = ActiveSheet
    ' Access metadata of the current workbook in SharePoint
    Set listObj = ws.ListObjects.Add(
        SourceType:=xlSrcExternal,
        Source:=spURL,
        Destination:=Range("A1")
    )
    ' Loop through rows to find "creator"
    For Each row In listObj.ListRows
        If row.Range(1, 1).Value = "creator" Then
            sharePointUsername = row.Range(1, 2).Value
            Exit For
        End If
    Next row
    ' Update footer with username
    ws.PageSetup.LeftFooter = "SUBMITTED BY: " & sharePointUsername & " on " & Date
    On Error GoTo 0
End Sub

解决方案 2:使用 SharePoint REST API 获取用户名

将 Excel VBA 与 SharePoint 的 REST API 集成,以从“创建者”字段检索用户名。

Sub FetchUsernameWithAPI()
    Dim http As Object
    Dim jsonResponse As String
    Dim username As String
    Dim ws As Worksheet
    Set http = CreateObject("MSXML2.XMLHTTP")
    Set ws = ActiveSheet
    ' API endpoint to fetch metadata
    apiURL = "https://your-sharepoint-site/_api/web/lists/getbytitle('Documents')/items"
    ' Make GET request
    http.Open "GET", apiURL, False
    http.setRequestHeader "Accept", "application/json;odata=verbose"
    http.Send
    ' Parse response for "creator" field
    jsonResponse = http.responseText
    username = ParseJSONForCreator(jsonResponse)
    ' Add username to footer
    ws.PageSetup.LeftFooter = "SUBMITTED BY: " & username & " on " & Date
End Sub

Function ParseJSONForCreator(jsonResponse As String) As String
    ' Basic parsing logic to extract "creator" value
    Dim pos As Integer
    Dim creatorValue As String
    pos = InStr(jsonResponse, """creator"":")
    creatorValue = Mid(jsonResponse, pos + 10, InStr(pos + 10, jsonResponse, ",") - pos - 10)
    ParseJSONForCreator = creatorValue
End Function

解决方案 3:通过 VBA 集成利用 Office 365 在线功能

将 Excel 的 VBA 功能与 Office 365 在线功能相结合,实现无缝 SharePoint 集成。

Sub AddFooterFromO365()
    Dim ws As Worksheet
    Dim o365User As String
    Set ws = ActiveSheet
    ' Assume user is logged in to Office 365
    o365User = Application.UserName
    ' Fetch creator data from workbook properties
    If ActiveWorkbook.BuiltinDocumentProperties("Creator") <> "" Then
        o365User = ActiveWorkbook.BuiltinDocumentProperties("Creator")
    End If
    ' Add to footer
    ws.PageSetup.LeftFooter = "SUBMITTED BY: " & o365User & " on " & Date
End Sub

将 SharePoint 数据与 Excel VBA 集成以增强审核

将 Excel 与 SharePoint 集成时经常被忽视的一个方面是两个平台之间元数据的无缝流动。使用 VBA,您可以超越基本自动化来提取关键的元数据字段,例如 用户名 个人完成模板的信息,并在自定义 Excel 页脚或页眉中使用它们。此功能在合规性等场景中至关重要,其中每个提交的表单都需要明确归属于负责其完成的人员。

另一种有用的方法涉及利用 SharePoint 广泛的元数据功能。例如,“修改者”或“上次修改”等列可以提供用于跟踪和验证的附加上下文。通过 VBA 动态提取这些数据,您的 Excel 模板不仅可以反映准确的用户信息,还可以减少手动输入错误的可能性。此功能在多个用户在共享模板上进行协作的团队项目中特别有价值。 🖇️

最后,重要的是要考虑组织使用 SharePoint 的方式的潜在变化。有些可能有自定义列或元数据字段,需要适应性强的 VBA 脚本。模块化编码实践(例如将 API 调用与数据格式化分开)可确保您的解决方案可以扩展或调整以适应此类变化。例如,在过去的项目中,我们使用此方法自动生成摘要报告,将用户活动直接从 SharePoint 聚合到 Excel 工作簿中。 🚀

有关 SharePoint 和 VBA 集成的常见问题

  1. 如何使用 VBA 在 Excel 中动态获取用户名?
  2. 通过使用 CreateObject("MSXML2.XMLHTTP"),您可以调用 SharePoint REST API 并解析 "creator" 元数据字段。
  3. 为什么会 Application.UserName 返回原始创建者的名字?
  4. 此命令检索与本地 Excel 安装关联的用户名,该用户名可能与访问 SharePoint 模板的用户不对应。
  5. 在 VBA 中解析 JSON 响应的最佳方法是什么?
  6. 使用组合 InStrMid,您可以从 JSON 响应中提取特定的数据字段,例如“创建者”。
  7. 我可以在 Excel 页脚中包含其他 SharePoint 字段(例如“上次修改时间”)吗?
  8. 是的,您可以扩展脚本以使用 SharePoint 的 API 获取多个元数据字段,并将它们格式化以包含在 Excel 中 PageSetup
  9. 是否可以针对多个模板自动执行此过程?
  10. 绝对地。您可以设计一个脚本,循环访问 SharePoint 中存储的多个模板,并使用特定于用户的数据更新每个模板的页脚。

关于动态页脚定制的最终想法

确保完成 SharePoint 模板的人员的用户名准确显示在 Excel 页脚中,从而提高责任性和可追溯性。利用 VBA 脚本的解决方案提供了可定制和可扩展的方法来满足这一需求。

通过集成高级元数据检索方法(例如 API)或使用内置文档属性,组织可以有效地自动化工作流程。这不仅节省了时间,还确保了精确的审核,这对于合规性较高的行业至关重要。 🚀

VBA 和 SharePoint 集成的参考和资源
  1. 详细阐述如何使用VBA动态操作Excel页脚: 微软VBA文档
  2. 解释 SharePoint 用于元数据检索的 REST API 功能: Microsoft SharePoint REST API 指南
  3. 提供有关 SharePoint 工作流和模板管理的见解: ShareGate - SharePoint 元数据最佳实践
  4. 讨论 VBA 中的 JSON 解析以实现高级 API 响应: Excel Macro Pro - JSON 解析