SharePoint にリンクされた Excel テンプレートでのユーザー アクティビティの追跡
複数のユーザーが同じ SharePoint テンプレートにアクセスしてフォームを送信する、にぎやかなオフィスを想像してください。 🖥️ 監査人が特定のフォームに誰が記入して提出したかを特定する必要がある場合に問題が発生します。 SharePoint はこの情報を「作成者」列の下に記録しますが、Excel シートのフッターにユーザー名を記載したハードコピーを印刷する必要性は依然として満たされていません。
デフォルトの VBA は次のように機能するため、このタスクはさらに複雑になります。 アプリケーション.ユーザー名 そして Environ("ユーザー名") 多くの場合、フォームを編集している実際のユーザーではなく、元のテンプレートの作成者またはローカル コンピューターのユーザーを指します。したがって、正しいユーザー名を動的に挿入するための信頼できる方法を見つけることが重要になります。
実際のシナリオでは、この不一致が監査と追跡の不正確さにつながる可能性があります。たとえば、私の以前の役割では、外部請負業者が記入したフォームの印刷出力に常に管理者のユーザー名が表示され、監査中に重大な混乱を引き起こすという問題がありました。
この記事では、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 メタデータ アクセスを組み合わせることで、元の作成者ではなく、フォームに入力したユーザーのユーザー名がフッターに反映されるようにします。
たとえば、最初のソリューションでは、 ListObjects.Add SharePoint のドキュメント ライブラリへのライブ接続を確立します。このコマンドはメタデータをワークブックに取り込み、行を反復処理して「作成者」フィールドを抽出できるようにします。部門がコンプライアンス フォームを提出するところを想像してください。各提出書類のフッターには責任のある従業員が明確に示され、監査の曖昧さが排除されます。この方法により柔軟性が確保され、フォーム投稿者を特定する際の手動介入が防止されます。 🚀
2 番目のアプローチでは、SharePoint の REST API を利用します。を使用することで、 CreateObject("MSXML2.XMLHTTP") コマンドを実行すると、スクリプトは HTTP リクエストを開始してメタデータを直接取得します。この方法は、SharePoint ライブラリが複雑であるか、多数のフィールドが含まれている環境で特に役立ちます。次のような関数を使用して JSON 応答を解析します。 InStr そして ミッド 「作成者」フィールドを正確に抽出できます。私の以前の役割では、同様のスクリプトによってフォームの追跡が合理化され、毎月の手動調整にかかる時間を節約できました。 🖋️
最終的なスクリプトは、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 Online 機能の利用
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 の統合で見落とされがちな側面の 1 つは、2 つのプラットフォーム間のメタデータのシームレスなフローです。 VBA を使用すると、基本的な自動化を超えて、次のような重要なメタデータ フィールドを抽出できます。 ユーザー名 テンプレートを完成させた個人の情報を収集し、カスタム Excel フッターまたはヘッダーで使用します。この機能は、送信されたすべてのフォームにその入力責任者の明確な帰属が必要なコンプライアンスのようなシナリオでは不可欠です。
もう 1 つの有用なアプローチには、SharePoint の広範なメタデータ機能を活用することが含まれます。たとえば、「更新者」や「最終更新日」などの列は、追跡と検証のための追加のコンテキストを提供できます。 VBA を通じてこのデータを動的に取得することにより、Excel テンプレートに正確なユーザー情報が反映されるだけでなく、手動入力エラーの可能性も軽減されます。この機能は、複数のユーザーが共有テンプレートで共同作業するチーム プロジェクトで特に役立ちます。 🖇️
最後に、組織による SharePoint の使用方法の潜在的な変動を考慮することが重要です。一部にはカスタム列またはメタデータ フィールドがあり、適応可能な VBA スクリプトが必要になる場合があります。 API 呼び出しをデータ形式から分離するなど、モジュラーコーディングを実践することで、ソリューションがそのような変動に合わせて拡張または調整できるようになります。たとえば、過去のプロジェクトでは、このアプローチを使用して、ユーザー アクティビティを SharePoint から Excel ワークブックに直接集計する概要レポートを自動的に生成しました。 🚀
SharePoint と VBA の統合に関するよくある質問
- VBA を使用して Excel でユーザー名を動的に取得するにはどうすればよいですか?
- を使用することで CreateObject("MSXML2.XMLHTTP")、SharePoint REST API を呼び出して、 "creator" メタデータフィールド。
- なぜそうなるのか Application.UserName 元の作成者の名前を返しますか?
- このコマンドは、ローカル Excel インストールに関連付けられたユーザーの名前を取得します。これは、SharePoint テンプレートにアクセスするユーザーに対応しない可能性があります。
- VBA で JSON 応答を解析する最良の方法は何ですか?
- を組み合わせて使用する InStr そして Midを使用すると、JSON 応答から「作成者」などの特定のデータ フィールドを抽出できます。
- 「最終更新日」などの他の SharePoint フィールドを Excel フッターに含めることはできますか?
- はい、スクリプトを拡張して、SharePoint の API を使用して複数のメタデータ フィールドを取得し、それらを Excel に含めるようにフォーマットすることができます。 PageSetup。
- 複数のテンプレートに対してこのプロセスを自動化することは可能ですか?
- 絶対に。 SharePoint に保存されている複数のテンプレートをループして、各テンプレートのフッターをユーザー固有のデータで更新するスクリプトを設計できます。
動的なフッターのカスタマイズに関する最終的な考え
SharePoint テンプレートを完成させた人のユーザー名が Excel フッターに正確に表示されるようにすることで、説明責任と追跡可能性の両方が向上します。 VBA スクリプトを活用したソリューションは、このニーズに対処するためのカスタマイズ可能でスケーラブルなアプローチを提供します。
API などの高度なメタデータ取得方法を統合するか、組み込みのドキュメント プロパティを使用することにより、組織はワークフローを効果的に自動化できます。これにより、時間が節約されるだけでなく、コンプライアンスを重視する業界では不可欠な正確な監査が保証されます。 🚀
VBA と SharePoint の統合に関する参考資料とリソース
- VBA を使用して Excel フッターを動的に操作する方法について詳しく説明します。 Microsoft VBA ドキュメント
- メタデータを取得するための SharePoint の REST API 機能について説明します。 Microsoft SharePoint REST API ガイド
- SharePoint ワークフローとテンプレート管理に関する洞察を提供します。 ShareGate - SharePoint メタデータのベスト プラクティス
- 高度な API 応答のための VBA での JSON 解析について説明します。 Excel マクロ Pro - JSON 解析