VBA

2016-05-30 11 views
-2

次のコードを使用してWord文書から段落を取得すると(それはdoesnの私はVBA

Set WordApp = CreateObject("Word.Application") 
WordApp.Visible = True 
Set WordDoc = WordApp.Documents.Open(aFile) 

WordDoc.Paragraphs(2).Range.Copy 
Selection.Paste 

WordDoc.Close 
WordApp.Quit 

は、しかしいかなる迅速な方法があります(元の形式を維持する)VBAを使用してWord文書から段落を挿入することができます

+0

Office Open XMLを見てください。閉じたファイルからWord文書direcltyにアクセスし、そのファイルを「解凍」し、そのファイルを構成する「文書パーツ」内のXMLを操作することができます。 VBAはこれをネイティブには行いませんが、ZipパッケージとXMLで動作する外部ライブラリが必要です。 MSXMLパーサーはWindowsの一部であり、後者を処理できますが、Zipパッケージの部分は難しくなります。 VB.NETとC#はこの点でより良い選択です... –

+0

私の質問をダウン投票した人々は、なぜそれがダウン投票されたのかを説明してください。 – gordon613

+0

おそらくそれは不明確です:あなたのコードが実行されている場所どのようなターゲットをペーストしているのかを知ることができます。 –

答えて

0

以下は完全なものですが、追加の段階が含まれています。

次のコードは、私は特定の段落をしたい場合は、私は各段落にブックマークを追加することにより、Word文書を準備することができ、現在の文書

Selection.InsertFile "C:\myFile.docx" 

にWord文書を挿入します。 (これは、VBAを使用して行うことは比較的簡単です)

Sub StripAllBookmarks() 
    Dim stBookmark As Bookmark 
    ActiveDocument.Bookmarks.ShowHidden = True 
    If ActiveDocument.Bookmarks.Count >= 1 Then 
     For Each stBookmark In ActiveDocument.Bookmarks 
      stBookmark.Delete 
     Next stBookmark 
    End If 
End Sub 
Sub addBookmarks() 
    StripAllBookmarks 
    c = 1 
    For Each para In ActiveDocument.Paragraphs 
    ActiveDocument.Bookmarks.Add Name:="B" + Trim(c), Range:=para.Range 
    c = c + 1 
    Next para 
End Sub 

は、私たちが最初の段落は、「B1」に設定し、第二段落は「B2」に設定ブックマークしたブックマークしたとしましょう。次のコードは、最初の段落を瞬時に追加します。

Selection.InsertFile "C:\myFile.docx", Range:="b1" 
1

ファイルを開こうとしない(誰かが使っているかもしれない)理由はわかりませんが、そのファイルのクローンを作成できますクローンファイルを使用します。この方法で元のファイルを開くことはできません:P

+1

質問で強調表示されているように、私が記述した方法でファイルを開きたくない理由は、速度の理由によるものです。 – gordon613