VBA在.doc文档中插入Excel complexe电子表格

VBA在.doc文档中插入Excel complexe电子表格,vba,excel,ms-word,Vba,Excel,Ms Word,所以我一直在研究一个word.dotm文件,它将几个.doc和.xls文档合并成一个.pdf文件 现在,我有两个不同的问题,我将只详细介绍关于这个主题的第一个问题: 在my.doc文档中插入一个complexe(非常复杂的)Excel工作表时,输出的只是一堆元数据(如果您更喜欢更清晰的语言,大部分看起来都是这样的:它完全是一堆字符和分页符),而不是我的文件。我在互联网上找了整整一天(真的,我浪费了一天的工作时间来寻找答案),甚至在MSDN论坛上问了这个话题(根本没有答案),每个人似乎都对自己的代

所以我一直在研究一个word.dotm文件,它将几个.doc和.xls文档合并成一个.pdf文件

现在,我有两个不同的问题,我将只详细介绍关于这个主题的第一个问题:

在my.doc文档中插入一个complexe(非常复杂的)Excel工作表时,输出的只是一堆元数据(如果您更喜欢更清晰的语言,大部分看起来都是这样的:它完全是一堆字符和分页符),而不是我的文件。我在互联网上找了整整一天(真的,我浪费了一天的工作时间来寻找答案),甚至在MSDN论坛上问了这个话题(根本没有答案),每个人似乎都对自己的代码很感兴趣

这是我的密码:

Sub MergeFiles()
    Documents.Open FileName:="C:\test_cea\02.doc"

    Selection.EndKey Unit:=wdStory
    Selection.InsertFile FileName:="C:\test_cea\03.doc"

    Selection.EndKey Unit:=wdStory
    Selection.InsertFile FileName:="C:\test_cea\04.xls"

    ActiveDocument.SaveAs2 FileName:="C:\test_cea\output.pdf", FileFormat:=wdFormatPDF
    ActiveDocument.Close SaveChanges:=doNotSaveChanges
End Sub
我已经尝试了很多方法,从切换到先打开.xls,再到在InsertFile()方法中尝试所有可能的参数组合,但都没有效果。

最有趣的部分是:当尝试使用Word UI时,它可以完美地工作,这意味着Word可以做到,但不知何故,我做错了。

下面是这个问题的最终答案:

由于Word无法解释Excel文件,因此无法以这种方式强制插入文件

而是使用以下代码:

Sub MergeFiles()

    Dim appExcel As Excel.Application
    Dim wdDocument As Word.Document

    Set appExcel = CreateObject("Excel.Application")
    Set wdDocument = Documents.Open("mydoc.doc")

    appExcel.Workbooks.Open("myxls.xls")

    appExcel.ActiveWorkbook.Sheets(1).Range("Print_area").CopyPicture 'Copy picture prevents weird behavior from Word'

    Selection.PasteSpecial Placement:=wdInLine, DataType:=wdPasteMetafilePicture

End Sub
很明显,这是一个示例代码,可以完成整个过程,但其目的是将打印区域(必须定义一个区域,也可以使用工作表(1)。使用Drange,但如果Excel文件格式异常,这将是一个问题)复制为图片并粘贴到Word中。您也可以简单地复制并粘贴它,但它可能会弄乱输出表的格式

我甚至不知道为什么人们否决了我的问题-_-


无论如何,如果您遇到同样的问题,只需告诉我此代码是否有效。

您能否准确地告诉我们您在Word UI中插入文件(尤其是xls)时使用了哪些命令。您是否尝试在Word宏中记录步骤,以比较您使用的语法是否与Word用于插入文件的语法相同?嗯,我正在使用Insert as对象将其插入Word UI,问题是,我必须在VBA中创建自定义工具栏,使其工作,而不必使用Word UI中的Insert as对象,这意味着它必须使用来自单词VBA引用的方法。我不能真正使用宏,因为我需要解构文本字符串,并执行复杂的算法来确定文件是否要合并。InsertFile不会给出与Insert/Object相同的结果,因此问题的“原因”已经足够清楚了。按照我的建议录制宏,这样您就可以看到WORD需要您使用的方法!我不是告诉您使用宏,而是使用记录器的结果来编写代码。