Microsoft Wordには、Word文書にコメントを追加する機能があります。コメントは、ドキュメントの改善を提案したり、テキストに関する考えを共有したりする場合に役立ちます。プログラムでコメントを管理する必要がある場合があります。そのために、この記事では、C++を使用してWord文書のコメントを操作する方法を説明します。

Word文書のコメントを操作するためのC++API

Aspose.Words for C++はネイティブC++ライブラリであり、Microsoft Wordドキュメントの作成、読み取り、変更、および変換を行うことができます。さらに、DOCXおよびDOCファイルのコメントの操作もサポートしています。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。

PM> Install-Package Aspose.Words.Cpp

C++を使用してWord文書にコメントを追加する

Aspose.Words for C++ APIは、作成者名、イニシャル、および日付/時刻を含むコメントを追加する機能を提供します。 Word文書にコメントを追加する手順は次のとおりです。

次のサンプルコードは、C++を使用してWord文書にコメントを追加する方法を示しています。

// ディレクトリパス。
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Wordファイルをロードする
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"Sample 1.docx");

// DocumentBuilderクラスのインスタンスを作成します
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);

// コメントを追加する
System::SharedPtr<Comment> comment = System::MakeObject<Comment>(doc, u"Aspose", u"AFFA", System::DateTime::get_Today());
builder->get_CurrentParagraph()->AppendChild(comment);
comment->get_Paragraphs()->Add(System::MakeObject<Paragraph>(doc));
comment->get_FirstParagraph()->get_Runs()->Add(System::MakeObject<Run>(doc, u"Comment text."));

// ドキュメントを保存します。
doc->Save(outputDataDir + u"AddCommentsToExistingDoc.docx");

以下は、サンプルコードによって生成された出力の画像です。

サンプルコードによって生成された出力の画像

Word文書からコメントを読む

以下は、Word文書からコメントを読むための手順です。

以下は、C++を使用してWord文書からコメントを読み取るためのサンプルコードです。

// ディレクトリパス。
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Wordファイルをロードする
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// コメントを取得する
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// すべてのコメントをループする
for (System::SharedPtr<Comment> comment : System::IterateOver<System::SharedPtr<Comment>>(comments))
{
	// コメント情報を印刷する
	std::cout << comment->get_Author() + u" " + comment->get_DateTime() + u" " + System::StaticCast<Node>(comment)->ToString(SaveFormat::Text);
}

C++を使用してWord文書のコメントを変更する

コメントを変更するには、NodeCollection->idx_get(int32_t index)メソッドを使用してコメントを取得し、必要に応じて変更します。以下は、Word文書のコメントを変更する手順です。

次のサンプルコードは、C++を使用してWord文書のコメントを変更する方法を示しています。

// ディレクトリパス。
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Wordファイルをロードします
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// コメントを取得する
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// コメントを得る
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(0));

// コメントテキストを更新
comment->SetText(u"Updated Text");

// ドキュメントを保存します。
doc->Save(outputDataDir + u"UpdatedComment.docx");

C++を使用してWord文書からコメントを削除する

Aspose.Words for C++ APIは、Word文書からコメントを削除するための複数の方法を提供します。このセクションでは、C++を使用して、特定のコメント、作成者によるコメント、およびすべてのコメントを削除する方法を学習します。

特定のコメントを削除する

特定のコメントを削除する手順は次のとおりです。

次のサンプルコードは、C++を使用してWord文書から特定のコメントを削除する方法を示しています。

// ディレクトリパス。
System::String sourceDataDir = u"D:\\Work\\Aspose\\01_SourceDirectory\\";
System::String outputDataDir = u"D:\\Work\\Aspose\\02_OutputDirectory\\";

// Wordファイルをロードする
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// コメントを取得する
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// コメントを得る
System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(2));

// コメントを削除
comment->Remove();

// ドキュメントを保存します。
doc->Save(outputDataDir + u"DeleteSpecificComments.docx");

著者によるコメントの削除

作成者によるコメントを削除する手順は次のとおりです。

以下は、C++を使用して作成者がコメントを削除するためのサンプルコードです。

// ディレクトリパス。
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Wordファイルをロードする
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// コメントを取得する
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// すべてのコメントをループして、「Aspose」の作成者が書いたコメントを削除します。
for (int32_t i = comments->get_Count() - 1; i >= 0; i--)
{
	System::SharedPtr<Comment> comment = System::DynamicCast<Comment>(comments->idx_get(i));
	if (comment->get_Author() == u"Aspose")
	{
		comment->Remove();
	}
}

// ドキュメントを保存します。
doc->Save(outputDataDir + u"DeleteCommentsByAuthor.docx");

すべてのコメントを削除

個々のコメントを削除する代わりに、NodeCollection->Clear()メソッドを使用してすべてのコメントを一度に削除できます。以下は、Word文書からすべてのコメントを削除する手順です。

次のサンプルコードは、C++を使用してWord文書からすべてのコメントを削除する方法を示しています。

// ディレクトリパス。
System::String sourceDataDir = u"SourceDirectory\\";
System::String outputDataDir = u"OutputDirectory\\";

// Wordファイルをロードする
System::SharedPtr<Document> doc = System::MakeObject<Document>(sourceDataDir + u"SampleComments.docx");

// コメントを取得する
System::SharedPtr<NodeCollection> comments = doc->GetChildNodes(NodeType::Comment, true);

// すべてのコメントを削除します。
comments->Clear();

// ドキュメントを保存します。
doc->Save(outputDataDir + u"DeleteAllComments.docx");

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、C++を使用してWord文書のコメントを操作する方法を学習しました。具体的には、コメントを追加、読み取り、編集、削除する方法を学びました。さらに、Aspose.Words for C++ APIを使用して、特定のコメント、作成者によるコメント、およびすべてのコメントを削除する方法を確認しました。 APIは、Word関連のタスクを自動化するための膨大な数の追加機能を提供します。 公式ドキュメントにアクセスすると、APIの詳細を調べることができます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。

関連項目