2

我有一个带有页眉/页脚和文本格式的模板。我想编写一个宏来用 .rtf 或 .doc 文件的内容填充此模板。另外,我想合并格式,以便保留模板文件中的标题和格式,以及 .rtf 或 .doc 文件中的图片。

剪切和粘贴效果很好。如果我打开并保存模板文件,打开要插入的文件,全选,然后使用“合并格式”进行特殊粘贴,那么我得到的正是我想要的。我只想要一个更具可扩展性的解决方案。

我写了一个宏来完成大部分工作,但它无法合并格式并删除(或隐藏)页眉和页脚。我认为正确的方法是使用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

更新——我也试过这种方法,好像是用剪切和粘贴,但结果是一样的。

4

3 回答 3

1

这是我能做的最好的。它粘贴为纯文本,但这总比没有好(或以原始格式粘贴)。

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
于 2013-05-12T14:25:58.530 回答
1
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
于 2015-11-04T14:06:58.453 回答
0

我在自己的 VBA 宏中尝试过同样的调用,发现

Selection.Range.InsertFile (FiletoInsert)

当我只传递一个参数文件名时似乎工作。确保文件名完整。

于 2014-05-09T18:41:57.163 回答