如何在VBA中获取链接SharePoint列表特定记录的photo的serviceRelativeUrl
获取PowerQuery中特定记录的serviceRelativeUrl并实现照片批注功能
一、提取特定记录的serviceRelativeUrl
方式1:批量提取所有记录的路径
- 打开PowerQuery编辑器,选中目标会员数据查询
- 切换到「添加列」选项卡,点击「自定义列」
- 输入公式:
[照片][serviceRelativeUrl],确认后生成新列,每条记录的照片相对路径会自动填充 - 如需完整照片URL,可使用拼接公式:
[照片][serverUrl] & [照片][serviceRelativeUrl]
方式2:定位单条记录(如第10条)的路径
- 在PowerQuery的「应用步骤」中选中「导航」后的数据集
- 注意PowerQuery行索引从0开始,第10条记录对应索引9,右键点击照片列的该条记录,选择「添加为新查询」
- 在新查询中直接展开
serviceRelativeUrl字段即可获取路径;也可在公式栏直接输入:#"导航"{9}[照片][serviceRelativeUrl](需将#"导航"替换为你实际的步骤名称)
二、为姓名单元格添加照片批注
提取完整照片URL后,可通过VBA批量实现批注功能:
- 返回Excel工作表,确保数据包含姓名列和完整照片URL列
- 按
Alt+F11打开VBA编辑器,插入新模块 - 粘贴以下代码(根据实际列名、工作表名调整):
Sub AddPhotoComments() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim picUrl As String Dim comment As Comment Set ws = ThisWorkbook.Worksheets("会员表") '替换为你的工作表名称 lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row '假设姓名在A列 For i = 2 To lastRow '从第2行开始,跳过表头 picUrl = ws.Cells(i, "B").Value '假设照片URL在B列 If picUrl <> "" Then '清除原有批注 On Error Resume Next ws.Cells(i, "A").Comment.Delete On Error GoTo 0 '添加带照片的批注 Set comment = ws.Cells(i, "A").AddComment comment.Text Text:="" comment.Shape.Fill.UserPicture picUrl comment.Shape.Width = 100 '自定义照片宽度 comment.Shape.Height = 120 '自定义照片高度 End If Next i End Sub
- 运行代码,姓名单元格鼠标悬停时即可显示对应会员照片
内容的提问来源于stack exchange,提问作者Martie Timmers
相关产品推荐
相关产品推荐

