通过VBA脚本在MS项目中设置页面布局

时间:2019-03-11 06:51:35

标签: vba ms-project

我正在研究一个脚本,该脚本可以从excel内部生成MS项目计划。一切工作正常,但我无法设置页眉和页脚。看起来我需要识别视图名称,但是我经常遇到运行时错误1101或其他错误。

我正在使用丹麦语版本的MS-project(Side = Page,Sider = Pages),根据页面设置菜单的标题,我的默认视图是“甘特图”。还尝试了运气好的“甘特图”。

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"

1 个答案:

答案 0 :(得分:0)

可以尝试以下几项:

  • 您似乎正在使用早期绑定(否则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)。另外,请确保没有检查任何不正确的引用(例如,对错误版本的引用)。

enter image description here