MS Project中通过VBA设置资源筛选器并自动打印个性化任务清单
批量生成MS Project资源个性化任务清单并打印的解决方法
问题核心修复点
- 替换
FilterApply为FilterApplyEx,直接传递资源名称参数,彻底消除弹窗 - 用
PrintOut方法自动执行打印,跳过手动触发打印按钮的步骤
完整可运行VBA代码
Sub GenerateResourceTaskLists() Dim res As Resource Dim originalView As String Dim originalFilter As String ' 保存当前视图与筛选器,执行完恢复原状 originalView = ActiveProject.CurrentView originalFilter = ActiveProject.CurrentFilter ' 遍历项目所有资源 For Each res In ActiveProject.Resources If Not res Is Nothing Then ' 切换到甘特图视图 ViewApplyEx Name:="&Gantt Chart", ApplyTo:=0 ' 应用指定资源的筛选器,无弹窗 FilterApplyEx Name:="Using Resource...", Value1:=res.Name, AllSummaryTasks:=True ' 直接打印当前筛选后的任务清单 ActiveProject.PrintOut ' 若需预览,替换上面的PrintOut为: ' ActiveProject.PrintPreview End If Next res ' 恢复初始视图和筛选器 ViewApplyEx Name:=originalView, ApplyTo:=0 FilterApplyEx Name:=originalFilter End Sub
关键代码解释
FilterApplyEx:官方推荐的带参数筛选方法,Value1直接传入资源名称,不会弹出输入对话框ActiveProject.PrintOut:使用默认打印机配置直接完成打印,如需自定义页码、份数等,可添加参数(比如Copies:=2指定打印2份)- 视图/筛选器还原:避免宏执行后改变用户的当前操作环境
内容的提问来源于stack exchange,提问作者Gordon Smith
相关产品推荐
相关产品推荐

