2011-07-25 45 views
0

我正在尝试编写一个VBA脚本,该脚本可以查找Word文档中的所有嵌入式(.docx)文件,并将其内容复制到父文档中,用文本替换嵌入式对象。 我能够找到使用嵌入的对象:将嵌入式文件的内容合并到原始文档

Selection.GoTo What:=wdGoToObject, Which:=wdGoToNext, Count:=1, Name:= _ 
    "Word.Document.12" 

但是目前还不清楚我怎么打开这个选择的对象,以及 - 更重要的是 - 通过同一个脚本打开的文件交互。在我自己超前之前,这甚至有可能吗?

回答

2

这为我工作(轻测试...)

Sub Tester() 

    Dim cDocs As Collection 
    Dim o As InlineShape 

    Set cDocs = GetEmbeddedDocs(ActiveDocument) 
    For Each o In cDocs 
     o.OLEFormat.Open 
     With ActiveDocument 
      .Content.Copy 
      .Close 
     End With 
     o.Select 
     Selection.Paste 
    Next o 
End Sub 


Function GetEmbeddedDocs(oDoc As Word.Document) As Collection 
    Dim o As InlineShape 
    Dim c As New Collection 

    For Each o In oDoc.InlineShapes 
     If o.Type = wdInlineShapeEmbeddedOLEObject Then 
      If o.OLEFormat.ProgID Like "Word.Document.*" Then 
       c.Add o 
      End If 
     End If 
    Next o 
    Set GetEmbeddedDocs = c 
End Function 
+0

哇。这工作完美!我也在这个过程中学到了六种新的VBA技术,所以也要感谢! – Derek

相关问题