Microsoft Wordには、Word文書にコメントを追加する機能があります。コメントは、ドキュメントの改善を提案したり、テキストに関する考えを共有したりする場合に役立ちます。プログラムでコメントを管理する必要がある場合があります。そのために、この記事では、C++を使用してWord文書のコメントを操作する方法を説明します。
- Word文書のコメントを操作するためのC++API
- C++を使用してWord文書にコメントを追加する
- Word文書からコメントを読む
- C++を使用して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文書にコメントを追加する手順は次のとおりです。
- まず、Documentクラスを使用してWordドキュメントをロードします。
- 前の手順で作成したDocumentオブジェクトを渡して、DocumentBuilderクラスのインスタンスを作成します。
- Commentクラスを使用してコメントを作成します。
- DocumentBuilder->getCurrentParagraph()->AppendChild(System::SharedPtrAspose::Words::Node newChild)メソッド。
- 最後に、Document->Save(System::String fileName)メソッドを使用してドキュメントを保存します。
次のサンプルコードは、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文書からコメントを読むための手順です。
- Documentクラスを使用してWord文書をロードします。
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep)メソッドを使用してコメントを取得します。
- コメントを繰り返し、個々のコメントの情報を取得します。
以下は、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文書のコメントを変更する手順です。
- まず、Documentクラスを使用してWordドキュメントをロードします。
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep)メソッドを使用してコメントを取得します。
- NodeCollection->idx_get(int32_t index)メソッドを使用して目的のコメントを取得し、結果をCommentにキャストします。
- コメントを更新します。
- 最後に、Document->Save(System::String fileName)メソッドを使用してドキュメントを保存します。
次のサンプルコードは、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++を使用して、特定のコメント、作成者によるコメント、およびすべてのコメントを削除する方法を学習します。
特定のコメントを削除する
特定のコメントを削除する手順は次のとおりです。
- Documentクラスを使用してWord文書をロードします。
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep)メソッドを使用してコメントを取得します。
- NodeCollection->idx_get(int32_t index)メソッドを使用して削除するコメントを取得し、その結果をCommentにキャストします。
- Comment->Remove()メソッドを使用してコメントを削除します。
- Document->Save(System::String fileName)メソッドを使用してドキュメントを保存します。
次のサンプルコードは、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");
著者によるコメントの削除
作成者によるコメントを削除する手順は次のとおりです。
- まず、Documentクラスを使用してWordドキュメントをロードします。
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep)メソッドを使用してコメントを取得します。
- コメントをループします。
- ループ内で、コメントを取得し、その作成者を比較します。著者が一致する場合は、コメントを削除します。
- 最後に、Document->Save(System::String fileName)メソッドを使用してドキュメントを保存します。
以下は、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文書からすべてのコメントを削除する手順です。
- Documentクラスを使用してWord文書をロードします。
- Document->GetChildNodes(Aspose::Words::NodeType nodeType, bool isDeep)メソッドを使用してコメントを取得します。
- NodeCollection->Clear()メソッドを使用してすべてのコメントを削除します。
- 最後に、Document->Save(System::String fileName)メソッドを使用してドキュメントを保存します。
次のサンプルコードは、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の詳細を調べることができます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。