我正在寻找一种迭代Access VBA中所有报表元素和属性的方法。我的主要目标是检查元素(可能是文本框和/或标签)是否包含某个字符串,然后替换该字符串,输出报告等。我知道如何检查并替换字符串并输出报告,但我找不到迭代单个报表元素来检查其属性的方法。反正有没有这样做?谢谢!
答案 0 :(得分:0)
在Access中 - 您引用的元素称为控件。
您可以遍历报表的所有控件 - 如果要更改其标题(对于标签)或值(未绑定的文本框) - 您可以使用循环根据控件类型有条件地检查属性中的字符串
这样的事情对您有用:
编辑 - 将rpt变量更改为AccessObject
Public Sub ChangeReportStrings(oldString as String, newString as String)
Dim rpt as AccessObject
Dim ctl as Control
For Each rpt in currentProject.AllReports
DoCmd.OpenReport rpt.Name, acViewDesign
For Each ctl in rpt.Controls
Select Case ctl.ControlType
Case acLabel
' Replace Label Caption old string with new string
ctl.Caption = Replace(ctl.Caption, oldString , newString)
Case acTextBox
' Probably should check to see if ControlSource is filled first
' Replace ctl.Value old String with new String
ctl.Value = Replace(ctl.Value, oldString , newString)
End Select
Next ctl
DoCmd.Close acReport, rpt.Name, acSaveYes
Next rpt
End Sub