我有一个ppt被保存为pdf用作目录 . 我希望能够根据唯一的产品ID命名文本形状,然后根据与访问数据库的连接更新它们 . 我可以使用输入框命名形状并使用vba更新值(用于测试)但我无法弄清楚如何遍历所有形状并根据匹配唯一ID标准更新形状文本 . 下面是我用来测试从输入框重命名和更新的内容 .
Sub UpdateShape()Dim oShape As Shape
Dim objName
On Error GoTo CheckErrors
If ActiveWindow.Selection.ShapeRange.Count = 0 Then
MsgBox "You need to select a shape first"
Exit Sub
End If
objName = ActiveWindow.Selection.ShapeRange(1).Name
objName = InputBox$("Assign a new name and value to this shape", "Update Shape", objName)
If objName <> "" Then
ActiveWindow.Selection.ShapeRange(1).Name = objName
ActiveWindow.Selection.ShapeRange(1).TextFrame.TextRange.Text = objName
End If
Exit Sub
CheckErrors:MsgBox Err.Description
结束子
我想到的是目录创建者根据他们放在目录中的图像命名形状 . 定价将来自数据库,该数据库基于为其创建目录的客户 . 我希望vba循环访问数据库记录,并根据产品ID与形状名称的匹配返回销售价格 .
我尝试过使用Set oShape = ActivePresentation.Slides(“MySlide”) . Shapes(“MyShape”)和oShape.TextFrame.TextRange.Text =“objName”
但我无法更新文本,我无法弄清楚如何使用变量代替“MySlide”
表的名称是tblProduct . 产品ID字段的名称是productid . 销售价格字段的名称是saleprice .
我感谢任何帮助 .
谢谢
2 回答
要查找和修改可能出现在演示文稿中任何位置的命名形状,您需要遍历所有幻灯片上的所有形状,以便找到所需的形状 . 它会触发大量的演示文稿,但不应该花费很长时间才能完成 . 即使是大型演示/大量更换,也需要几秒钟 .
我不清楚你在这里遇到的问题,但首先,你的形状命名代码有一些问题 . 查看评论并尝试下面的半航空代码 .