2013-05-11 32 views
1

我有一個頁眉/頁腳和文本格式的模板。我想編寫一個宏來填充此模板的.rtf或.doc文件的內容。另外,我想合併格式,以便保留模板文件的標題和格式,以及.rtf或.doc文件中的圖片。Word VBA宏插入文件和合並格式化

剪切粘貼效果很好。如果我打開並保存模板文件,請打開要插入的文件,選擇全部,然後使用「合併格式」粘貼特殊文件,然後按照我的意願獲取。我只想要一個更具可擴展性的解決方案。

我寫了一個宏,它完成了大部分工作,但它無法合併格式並丟棄(或隱藏)頁眉和頁腳。我認爲正確的方法將使用InsertFile方法,但我無法弄清楚。

任何指針將不勝感激(我是新的Word和VBA)。

Sub InsertFile() 

    currentPath = ActiveDocument.Path 

    Set FileBox = Application.FileDialog(msoFileDialogFilePicker) 

    With FileBox 
     .Title = "Select the File that you want to insert" 
     .InitialFileName = currentPath & "\" & "*.rtf" 
     .AllowMultiSelect = False 
     If .Show = -1 Then 
      FiletoInsert = .SelectedItems(1) 
     End If 
    End With 

    Selection.Range.InsertFile FiletoInsert 
    Set FileBox = Nothing 
End Sub 

更新 - 我也試過this approach,這似乎是使用剪切和粘貼,但結果是一樣的。

回答

0

這是我能做的最好的。它以純文本的形式粘貼,但比沒有更好(或粘貼原始格式)。

Sub InsertFile() 
    ' inserts selected file into current document (strips formatting) 

    With Application.FileDialog(msoFileDialogFilePicker) 
     .AllowMultiSelect = False 
     .Title = "Select the File that you want to insert" 
     .Show 
     FiletoInsert = .SelectedItems(1) 
    End With 

    ' get content from my file 
    Application.Documents.Open (FiletoInsert) 
    Application.Selection.WholeStory 
    Application.Selection.Copy 
    Application.ActiveWindow.Close 

    ' paste without formatting 
    Application.Selection.PasteSpecial DataType:=wdPasteText 

End Sub 
+1

爲什麼有人反對票而不當沒有其它有效的答案我的回答發表評論我要我自己的問題? – 2014-11-30 18:33:24

0

我試着在我自己的VBA宏此相同的調用,並發現

Selection.Range.InsertFile(FiletoInsert)

看起來工作時,我只傳遞一個參數文件名。確保文件名是完整的。

0
Sub InsertFile() 

    ' inserts selected file into current document (strips formatting) 

    With Application.FileDialog(msoFileDialogFilePicker) 
     .AllowMultiSelect = False 
     .Title = "Select the File that you want to insert" 
     .Show 
     FiletoInsert = .SelectedItems(1) 
    End With 
    Selection.InsertFile FileName:=FiletoInsert, Range:="", _ 
     ConfirmConversions:=False, Link:=False, Attachment:=False 
End Sub