通过 VBA 脚本在 MS-project 中设置页面布局

Setting page layout in MS-project from VBA script

我正在编写一个从 excel 内部生成 MS-project 计划的脚本。一切正常,但我在设置 header 和页脚时遇到问题。看起来我需要识别视图名称,但我经常收到运行时错误 1101 或其他一些错误。

我正在开发 MS-project 的丹麦语版本(Side=Page,Sider=Pages),根据页面设置菜单的标题,我的默认视图是 "Gantt-diagram"。也试过 "Gantt Chart" 没有运气。

Dim pjapp As Object
Dim newproj As Object

Set pjapp = CreateObject("MSProject.application")
pjapp.Visible = True
Set newproj = pjapp.Projects.Add
Set ActiveProject = newproj

' here I want to remove the legend (does not work)
pjapp.FilePageSetupLegendEx Name:="Gantt-diagram", LegendOn:=pjNoLegend

' here I want to set the footer
pjapp.FilePageSetupFooter Alignment:=pjRight
pjapp.FilePageSetupFooter Text:="&[Side] of &[Sider] just some text here"

' setting page to A3 format - this somehow works
pjapp.FilePageSetupPage PaperSize:=8

' here I want to setup the header (does not work)
pjapp.FilePageSetupHeader Name:="Gantt-diagram", Alignment:=pjRight, Text:="My header"

这里有一些尝试:

  • 看起来您正在使用早期绑定(否则像 pjNoLegend 这样的固有常量会导致调试错误),因此将 Project 对象声明为它们的本机类型(例如 Dim pjapp As MSProject.Application)。
  • 使用 FilePageSetupLegend 而不是 FilePageSetupLegendEx
  • 使用位置参数而不是名称调用 FilePageSetupHeader 并跳过视图名称参数(它将默认为当前视图)。例如:pjapp.FilePageSetupFooter , pjRight, "&[Side] of &[Sider] just some text here"
  • ActiveProject 是 MS Project 中的保留字,因此在此处使用不同的变量名称或删除该行代码,因为您已经有一个对象变量 newproj,并且它已经是活动项目。

注意:要使用 early binding(更简单),请包含对 Microsoft Project 对象库的引用。为此,在 VB 编辑器中,转到工具:参考并检查适当的参考(它可能被列为 "Microsoft Office Project Object Library" 并将包括版本号——我使用的是 2013,即 v15 .0)。还要确保没有检查任何不正确的引用(例如对错误版本的引用)。