C#操作mppファイル
必要な設定
プロジェクトにMicrosoftProject 11.0 Object Libraryの参照を追加します.この参照はcomタブにあります.
に注意
Microsoft Project 11.0 Object Libraryは、本機でMicrosoft Projectをインストールしてから参照できます.
参照後にプログラムを実行してエラーを報告した場合:
COMクラスファクトリでCLSIDが{......}のコンポーネントを検索中に失敗しました.原因は以下のエラーです.
Microsoft Project Basicは、コントロールパネル-』管理ツール-』コンポーネントサービス-』コンピュータ-』マイコンピュータ-』DCom構成-』で入手してください.
次に、「≪プロパティ|Properties|Eas≫」をクリックして、アプリケーションの「≪プロパティ|Properties|Eas≫」ダイアログ・ボックスを開きます.
「≪セキュリティ|Security|ldap≫」タブをクリックし、「≪権限の起動とアクティブ化|Start and Activate Privileges|ldap≫」および「≪アクセス|Access|ldap≫」グループで「≪カスタマイズ|Customize|ldap≫」を選択します.
プロジェクトにMicrosoftProject 11.0 Object Libraryの参照を追加します.この参照はcomタブにあります.
に注意
Microsoft Project 11.0 Object Libraryは、本機でMicrosoft Projectをインストールしてから参照できます.
参照後にプログラムを実行してエラーを報告した場合:
COMクラスファクトリでCLSIDが{......}のコンポーネントを検索中に失敗しました.原因は以下のエラーです.
Microsoft Project Basicは、コントロールパネル-』管理ツール-』コンポーネントサービス-』コンピュータ-』マイコンピュータ-』DCom構成-』で入手してください.
次に、「≪プロパティ|Properties|Eas≫」をクリックして、アプリケーションの「≪プロパティ|Properties|Eas≫」ダイアログ・ボックスを開きます.
「≪セキュリティ|Security|ldap≫」タブをクリックし、「≪権限の起動とアクティブ化|Start and Activate Privileges|ldap≫」および「≪アクセス|Access|ldap≫」グループで「≪カスタマイズ|Customize|ldap≫」を選択します.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.MSProject;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
Program pro = new Program();
pro.readMpp();
// pro.callMacro();
//pro.createMpp();
}
// mpp
public void callMacro()
{
Object missing = Type.Missing;
ApplicationClass prj = new ApplicationClass();
// mpp
prj.FileOpen("C:/Documents and Settings/Administrator/My Documents/test.mpp",
false, missing, missing, missing, missing, missing, missing, missing,
missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
// testMacro
prj.Macro("testMacro");
// , mpp
prj.FileClose(PjSaveType.pjDoNotSave, false);
prj.Quit(PjSaveType.pjDoNotSave);
}
public void readMpp()
{
Object missing = Type.Missing;
ApplicationClass prj = new ApplicationClass();
prj.FileOpen("D:/test.mpp",
false, missing, missing, missing, missing, missing, missing, missing,
missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing);
foreach (Project proj in prj.Projects)
{
foreach (Task task in proj.Tasks)
{
System.Console.WriteLine("|" + task.Name + "|" + task.UniqueID + "|" + task.ResourceNames + "|");
}
}
prj.FileClose(PjSaveType.pjSave, false);
prj.Quit(PjSaveType.pjSave);
System.Console.Read();
}
public void createMpp()
{
Object missing = Type.Missing;
ApplicationClass prj = new ApplicationClass();
PjFileFormat format = PjFileFormat.pjMPP;//format
prj.Visible = true;
prj.FileNew(Type.Missing, Type.Missing, Type.Missing, false);
Project myProject = prj.ActiveProject;
Task task = null;
task = myProject.Tasks.Add("zhi", 1);
task.Start = "2008-8-1";
task.Finish = "2008-8-18";
task.SetField(PjField.pjTaskNotes, "Task1");
task = null;
task = myProject.Tasks.Add("wenzhixing", 2);
task.Start = "2008-8-8";
task.Finish = "2008-8-28";
task.ActualStart = "2008-9-8 8:00";
task.ActualFinish = "2008-9-28 17:00";
task.OutlineLevel = 2;
task.SetField(PjField.pjTaskResourceNames, "wenzhi");
task = null;
task = myProject.Tasks.Add("wen", 3);
task.Start = "2008-8-11";
task.Finish = "2008-8-18";
task.SetField(PjField.pjTaskNotes, "Task2");
task.Notes += "hehe";
task.OutlineLevel = 1;
task = null;
task = myProject.Tasks.Add("wen", 4);
task.Start = "2008-8-18";
task.Finish = "2008-8-28";
task.OutlineLevel = 2;
task.SetField(PjField.pjTaskResourceNames, "wenzhi");
prj.FileSaveAs("C:/Documents and Settings/Administrator/My Documents/mjm.mpp",
format, missing, false, missing, missing, missing, missing,
missing, missing, PjPoolOpen.pjPoolReadWrite, missing, missing, missing, missing, missing, missing, missing, missing);
}
}
}