Консолидация содержимого встроенного файла в исходный документ - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь написать сценарий VBA, который находит все встроенные (.docx) файлы в документе Word и копирует их содержимое в родительский документ, заменяя встроенный объект текстом. Я могу найти вложенные объекты, используя:

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

Однако мне неясно, как открыть этот выбранный объект и, что более важно, взаимодействовать с открытым файлом с помощью того же сценария. До того, как я забегу далеко вперед, возможно ли это?

1 Ответ

2 голосов
/ 25 июля 2011

Это сработало для меня (слегка проверено ...)

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
...