【问题标题】:Word VBA macro to insert file and merge formatting用于插入文件和合并格式的 Word VBA 宏
【发布时间】:2013-05-06 08:02:11
【问题描述】:

我有一个带有页眉/页脚和文本格式的模板。我想编写一个宏来用 .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

更新——我也试过this approach,好像是用剪切粘贴,但结果是一样的。

【问题讨论】:

    标签: vba ms-word


    【解决方案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
    

    【讨论】:

    • 在没有其他有效答案的情况下,为什么有人在没有评论我对我自己问题的答案的情况下投了反对票?
    【解决方案2】:

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

    Selection.Range.InsertFile (FiletoInsert)

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

    【讨论】:

      【解决方案3】:
      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多