2017-10-11 26 views
0

Je réalise un programme WinForm sur Visual Studio qui automatise la création et l'automatisation d'un fichier MS-Project.Masquer une colonne dans MS-Project avec C# Interop

J'utilise ces références:

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

Dans un moment donné dans mon dossier MS-Project, je souhaite personnaliser l'affichage des colonnes dans la table.

Pour cela j'utilise la fonction TableEditEx. J'ai déjà fait une nouvelle colonne personnalisée comme ceci:

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"); 

Et maintenant je veux cacher la colonne "Noms de ressources" par exemple. Pour ce faire j'ai essayé le code suivant:

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

Mais cela ne semble pas faire plus que de sélectionner la colonne.

J'ai fait des recherches ici:

Documentation : TableEditEx

Répondre

1

Pour masquer la colonne (supprimez pas), définir la largeur de colonne = 0:

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

De cette façon, l'utilisateur peut réafficher la colonne plus tard, sans avoir à modifier la table pour l'insérer.

1

D'accord,

J'ai trouvé une solution sur moi-même. Je l'ai essayé de faire une macro pour obtenir le code VBA pour masquer une colonne et je suis arrivé ceci:

SelectTaskColumn Column:="Resource Names" 
ColumnDelete 

Et je l'ai converti en code C#:

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

Et cela a fonctionné, merci moi-même!