如何从另一个Word文档控制一个Word文件



我正试图使用一个称为mDoc的主文件来从一个名为sDoc的从属文件复制图表。代码似乎在第一个循环中有效,但在第二个循环和所有后续循环中,没有图表从主循环复制到从循环。

Sub CopyAllCharts()

Dim objShape As InlineShape
Dim mDoc As Document
Dim sDoc As Document

Path = "C:UsersryansDesktopword_docs"
File = Dir(Path & ".")

Do While File <> ""

Set mDoc = Documents("Testing.docm")
Set sDoc = Documents.Open(FileName:=Path & File)

Windows(sDoc).Activate
Debug.Print ActiveDocument.Name

For Each objShape In sDoc.InlineShapes
Debug.Print objShape.HasChart
If objShape.HasChart Then
objShape.Chart.Select
Selection.Copy

Windows(mDoc).Activate
Debug.Print ActiveDocument.Name

Selection.PasteAndFormat (wdPasteDefault)
Selection.Collapse Direction:=wdCollapseStart
End If
Next objShape

sDoc.Close SaveChanges:=False
File = Dir()
Loop

End Sub

在第一个循环中,这些行选择并打印活动文档的名称。

Windows(mDoc).Activate
Debug.Print ActiveDocument.Name

在第二个循环和所有其他循环中,Windows(mDoc).Activate不激活主文档,Debug.Print ActiveDocument.Name打印从属文档的名称,但不打印主文档的名称。

我试着让Range的东西发挥作用,并取得了一些进展,但最终,我无法让它以我想要的方式发挥作用。最后,我使用了下面的代码示例,它符合我的要求。

Sub CopyAllCharts()
Dim objShape As InlineShape
Dim mDoc As Document
Dim sDoc As Document
Path = "C:UsersryansDesktopword_docs"
File = Dir(Path & ".")
Do While File <> ""
Set mDoc = Documents("Control One Word Document From Another Word Document.docm")
Set sDoc = Documents.Open(FileName:=Path & File)

Windows(sDoc).Activate
If sDoc.Name = ActiveDocument.Name Then
Windows(sDoc).Activate
Debug.Print ActiveDocument.Name

For Each objShape In sDoc.InlineShapes
Debug.Print ActiveDocument.Name
Debug.Print objShape.HasChart

If objShape.HasChart Then
objShape.Chart.Select
Selection.Copy
If mDoc.Name <> ActiveDocument.Name Then
Windows(mDoc).Activate
End If
Debug.Print ActiveDocument.Name
Selection.PasteAndFormat (wdPasteDefault)
Selection.Collapse Direction:=wdCollapseStart
End If

Windows(sDoc).Activate
Debug.Print ActiveDocument.Name
Next objShape
End If
sDoc.Close SaveChanges:=False
File = Dir()
Loop
End Sub

最新更新