こんにちは。 >まず、すごく感激したのは、Aの文書コレクションを新規作成する メソッドがないからわざと空の文書コレクションを作ってあげるなんて!すごいです。 そんなこと考えても見ませんでした。これが応用力ってやつなんですね。脱帽です。 すみません。私が記述したものはすべて外国のサイトで紹介されていたものです^^; でも、私も初めてこれを見たときはその発想に驚かされました^^ >昨日から何度もWhileの中の処理を紙に書いてみてるんですけど Set NVECol = view.AllEntries 'すべてのビューエントリ取得(ビューの表示順通りに格納される) 、で記述した通り、NVECol(またはvc)にはビューのエントリが表示順通りに格納されています。 ちなみにエントリとはビューで表示されている各行を指しているものと理解してもらえればOKです。 その順番で選択文書と比較し、選択文書コレクションの中の一致した文書をソート結果文書コレクションへセットし、それを全エントリの数だけ繰り返すことで結果的にソートされた文書コレクションが出来上がります。 例えば、ビューに5つのエントリ「A」〜「E」が表示されていて、「B」と「C」を選択した場合、以下のような処理が行われます。 (1)すべてのビューエントリ取得(vc=「A」〜「E」) Set vc = view.AllEntries (2)ビューの最初のエントリを取得(NVEntry=「A」) Set NVEntry = vc.GetFirstEntry (3)ビューの現在のエントリ(NVEntry=「A])に一致する文書を選択文書コレクション(dc=「B」、「C」)内から検索) Set NDoc = dc.GetDocument( NVEntry.Document ) (4)一致しないので次のエントリ取得(NVEntry=「B」) Set NVEntry = NVECol.GetNextEntry( NVEntry ) (5)ビューの現在のエントリ(NVEntry=「B])に一致する文書を選択文書コレクション(dc=「B」、「C」)内から検索) Set NDoc = dc.GetDocument( NVEntry.Document ) (6)一致する文書があるのでソート結果文書コレクションへそれを退避(NDColSorted=「B」) If Not NDoc Is Nothing Then Call NDColSorted.AddDocument( NDoc ) End If (7)次のビューエントリを取得(NVEntry=「C」) Set NVEntry = NVECol.GetNextEntry( NVEntry ) 以下エントリがなくなるまで繰り返す 最後に「B」、「C」の順に格納された文書コレクションをdcへ代入(上書き)する Set dc = NDColSorted