2017-10-11 127 views
0

我在Visual Studio中做了一個WinForm程序,該程序可以自動創建和自動化MS-Project文件。用C#Interop隱藏MS-Project中的列

我使用這些引用:

Microsoft Office 16.0 Object Library 
Microsoft Office Project 16.0 Object Library 
Microsoft Project Task Launch Control 

在我的MS-項目文件的一些觀點,我想自定義表中的列的顯示。

爲此,我使用TableEditEx函數。我已經做了這樣一個新的自定義列:

Microsoft.Office.Interop.MSProject.Application projApp = new Microsoft.Office.Interop.MSProject.Application(); 
projApp.Application.SelectTaskColumn(Column: "Add New Column"); 
projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, NewName: "Progression", NewFieldName: "Text1", Title: "Completion", ShowInMenu: true, Width: 12); 
projApp.Application.TableApply(Name: "&Entry"); 

現在我想隱藏列「資源名稱」例如。爲此,我嘗試了以下代碼:

projApp.Application.SelectTaskColumn(Column: "Resource Names"); 
projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, Create: false, ShowInMenu: false); 
projApp.Application.TableApply(Name: "&Entry"); 

但是它似乎沒有做任何事情比選擇列更多。

我在這裏研究:

Documentation : TableEditEx

回答

1

要隱藏的列(未刪除),設置列寬= 0:

projApp.Application.TableEditEx(Name: "&Entry", TaskTable: true, FieldName: "Resource Names", Width: 0); 
projApp.Application.TableApply(Name: "&Entry"); 

這樣一來,用戶可以取消隱藏列以後無需編輯,將其插入表。

1

好吧,

我發現我自己的解決方案。我試着做一個宏,以獲得VBA代碼隱藏一列,我得到這個:

SelectTaskColumn Column:="Resource Names" 
ColumnDelete 

我將它轉換在C#代碼:

projApp.Application.SelectTaskColumn(Column: "Resource Names"); 
projApp.Application.ColumnDelete(); 

和它的工作,謝謝嘍!