1

ソースと宛先の Word 2013 ドキュメントがあります。各ドキュメントには複数のセクション区切りがあり、各セクションには非常に特殊なフッターがあり、邪魔することはできません。ソース ドキュメントから特定のセクションのコンテンツのみを (セクション区切りなしで)コピーし、それらのコンテンツをコピー先ドキュメントの特定のセクションに貼り付ける必要があります。たとえば、ソース セクション 3 のテキストをコピー先セクション 5 にコピーします。

問題は、ソース セクションをコピーすると、そのコピー コマンドにソース ドキュメントのセクション区切り文字も含まれることです。したがって、宛先ドキュメントに貼り付けると、宛先セクションの区切り文字が吹き飛ばされます(または、宛先セクションがドキュメントの最後のセクションであり、その後にセクション区切り文字がない場合は新しいセクションが追加されます)。

VBA マクロを使用して、そのセクションのセクション区切りをコピーせずにソース ドキュメントから特定のセクションの生のコンテンツのみをコピーし、そのセクションのセクション区切りを吹き飛ばさずに別のドキュメントに貼り付ける方法はありますか?

私はこのようなあらゆる種類のバリエーションを試しました:

source.Sections(3).Range.Select
source.Sections(3).Range.Copy
dest.Sections(5).Range.Select
dest.Sections(5).Range.Paste

ただし、貼り付け行は、宛先ドキュメントのセクション区切りを妨げます。また、セクション区切りを除外することを期待して、ソース ドキュメントからの選択長を (コピーする前に) 1 文字減らしてみました。

source.Sections(3).Range.Select
source.ActiveWindow.Selection.MoveEnd Unit:=wdCharacter, Count:= -1  ' (I also tried -2, -3, etc)
source.Sections(3).Range.Copy
dest.Sections(5).Range.Select
dest.ActiveWindow.Selection.MoveEnd Unit:=wdCharacter, Count:= -1  ' (I also tried -2, -3, etc)
dest.Sections(5).Range.Paste

これらの選択の削減により、セクションの実際のテキストが削減されますが、選択範囲にあると思われるセクション区切りを除外していないようです?

4

3 に答える 3

1

あなたのコードの問題は、最後に移動したものをコピーしないことです。Selection を変更しても、Range には影響しません。

Selection を使用するよりも、Range オブジェクトを直接使用する方が適切です。MoveEnd メソッドはそれで動作するはずです。このようなことを試してください

Dim rngSec as Word.Range
Set rngSec = source.Sections(3).Range
rngSec.MoveEnd wdCharacter, -1
rngSec.Copy
于 2015-12-01T20:36:24.387 に答える