私はInterop.MSProjectをC#で使用して、概念的には世界で最も似たようなことをしようとしています。ただし、ドキュメントが最小限である不可解なAPIに問題があります。私がやりたいのは、その列の1つ(セル)に特定の文字列を含む行を見つけて、その行を削除することだけです。それが終わったら、変更したプロジェクトファイルを表示して、ユーザーがそれを保存できるようにします。これが私が試したことです:
MSProject.Application app = new MSProject.Application();
app.FileOpenEx(
filePath,
false,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
MSProject.PjPoolOpen.pjPoolReadWrite,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing,
Type.Missing);
foreach(MSProject.Task task in proj.Tasks)
{
if (task == null) continue;
string cellValue = task.OutlineCode3;
if (cellValue == searchString)
task.Delete();
}
app.Visible = true;
task.Deleteが機能していないようです。私はこのコードを次のように一般化しようとさえしました:
foreach (MSProject.Task task in proj.Tasks)
task.Delete()
そしてこれもうまくいきませんでした。行セルの1つの値に基づいてタスクまたは行ベースを削除する方法を知っている人はいますか?