如何在MS Project VBA中获取对象当前值及NormalType属性?
没问题!我来帮你搞定MS Project VBA里保存页眉文本和提取NormalType值的需求~
一、保存当前页眉文本的实现
MS Project里的页眉是通过PageSetup对象控制的,页眉分为左、中、右三个独立区域。下面的通用过程可以接收页眉位置名称(Left/Center/Right)和一个变量,用来获取并保存指定区域的当前页眉文本:
Sub SaveHeaderText(headerPosition As String, ByRef savedText As String) Dim ps As PageSetup Set ps = ActiveProject.PageSetup ' 根据传入的位置参数匹配对应的页眉区域 Select Case UCase(headerPosition) Case "LEFT" savedText = ps.Header(pjHeaderLeft) Case "CENTER" savedText = ps.Header(pjHeaderCenter) Case "RIGHT" savedText = ps.Header(pjHeaderRight) Case Else MsgBox "请输入有效的页眉位置:Left/Center/Right" savedText = "" End Select ' 可根据需求将文本保存到变量、文件或其他存储位置 ' 示例:输出到VBA立即窗口查看结果 Debug.Print "已保存的" & headerPosition & "页眉文本:" & savedText End Sub
调用示例:
Sub TestSaveHeader() Dim myLeftHeader As String ' 保存左页眉文本到myLeftHeader变量 SaveHeaderText "Left", myLeftHeader ' 弹窗显示保存的结果 MsgBox "当前左页眉文本:" & myLeftHeader End Sub
二、提取NormalType值(普通文本项)
页眉里经常混合普通文本、页码、日期等不同类型的元素,你提到的NormalType对应的是MS Project内置的pjNormalText常量(专门指代普通文本项)。我们可以用PageSetup.GetText()方法直接提取指定页眉区域的普通文本内容:
Sub GetNormalTypeHeaderContent(headerPosition As String) Dim ps As PageSetup Dim normalTextContent As String Set ps = ActiveProject.PageSetup Select Case UCase(headerPosition) Case "LEFT" normalTextContent = ps.GetText(pjHeaderLeft, pjNormalText) Case "CENTER" normalTextContent = ps.GetText(pjHeaderCenter, pjNormalText) Case "RIGHT" normalTextContent = ps.GetText(pjHeaderRight, pjNormalText) Case Else MsgBox "请输入有效的页眉位置:Left/Center/Right" normalTextContent = "" End Select MsgBox headerPosition & "页眉中的普通文本(NormalType)内容:" & normalTextContent End Sub
小提示
pjHeaderLeft、pjHeaderCenter、pjHeaderRight是MS Project内置常量,用来精准指定页眉的三个区域- 如果页眉里有多个普通文本片段(比如中间穿插了页码),
GetText(pjNormalText)会自动返回所有普通文本的拼接结果 - 若需要区分页眉里的其他元素(比如页码、日期),可以遍历
PjHeaderFooterItem的所有常量逐一提取对应内容
内容的提问来源于stack exchange,提问作者Doons
相关产品推荐
相关产品推荐

