2017-02-02 8 views
0

私は単語文書から情報を抽出するためにExcel vbaを使用しています。 文書には、番号付きリストのレベルがあります。たとえば:VBA getcrossreferenceitems(wdRefTypeNumberedItem)段落を切り取りますか?

1. ABC 
    1.1 DEF 
     1.1.1 ABCDEF 
2. AAA 
    2.1 BBB 
     2.1.1. CCC 

と私はそれぞれのレベルに各見出しの完全なコンテキストを取得し、Excelの範囲にそれらを配置する必要があり、私が使用すなわち{"1.ABC", "1.1 DEF", "1.1.1 ABCDEF", "2. AAA", "2.1 BBB", "2.1.1. CCC"}

機能は次のとおりです。

For Each sec In objDoc.getcrossreferenceitems(wdRefTypeNumberedItem) 

しかし、見出しが長すぎると見出しが切り捨てられます。例えば、私は(機密理由のためランダムなテキストが追加されています):

"5.2.11。現在の評価:評価プロセスの一環として、XXXは2340AERTQ3493YRを行います.ADT34534FDGSRを選択するときは、AERA34AEFDSであることを確認してください。 "

しかし、唯一の

5.2.11。現在の参考資料:評価プロセスの一環として、XXXは234

と表示され、残りの文章は削除されます。

誰か他の解決策がある場合は、私に知らせてください。

+0

あなたは完全な機能を投稿できますか?あなたはどのように '秒'の寸法を決めていますか? – RyanL

+0

@ RyanL秘密の理由で完全なものを投稿することはできませんが、一般的には、自分のプログラムで、番号付きの各項目に関連付けられたテキストを抽出するだけです –

答えて

0

この動作を確認します。あなたが全文を提供し、その結果をGetCrossReferenceItemsによって返されたリストと相互参照するために、番号付きのすべての項目について文書をスキャンするのが面倒で巧妙な解決策です。かなりの作業がありますが、参照可能な見出しとNumberedItemを使用して1つのリストを作成する機能を提供します。これは、Word独自の実装の代わりにユーザーフレンドリーな方法を構築するためです。

GetCrossReferenceItemsによって返されたリストに適用されるWordの書式設定と一致させる必要があります。特殊文字の特定と削除。

トラックの変更には注意してください。 GetCrossReferenceItemsにバグがあります。これは、テキストの先頭に変更が加えられたアイテム(私の場合はヘッダー)がGetCrossReferenceItemsによって返されず、内部的にリストに残ってインデックスがオフセットされることを意味します。問題の項目が項目11である場合、GetCrossReferenceItemsは項目12に属する項目に項目11を返します。回避策は、すべてのリビジョンをGetCrossReferenceItemsより前に受け入れ、その後に元に戻すことです。

これは簡単ではありませんが、機能します。

関連する問題