使用VB6从一个文档粘贴到另一个文档后,Word文档中的边距不正确

时间:2013-02-27 11:00:37

标签: vb6 ms-word interop

我继承了一个VB6应用程序,我可以帮助它的一部分。

代码打开word文档并复制其内容。一旦完成,它将打开另一个文档并将第一个文档中的内容粘贴到第二个文档中。打开,复制和粘贴工作正常,问题在于粘贴文本的格式化以及随后的部分细分。在分段中断之后它不会直接出现在另一页上,但是分段中断仍然表示它是连续的。我做了一些挖掘并尝试了下面的内容

Stop Margin Adjustment when pasting - Microsoft Community

Problems with margins when I copy and paste a document into template - Microsoft Community

Section break causes unexpected page break in word

Troubleshoot page breaks and section breaks - Word - Office.com

这些都没有帮助。代码的简化版本如下:

    GetWord97Object objWordApp

objWordApp.Visible = True
objWordApp.documents.Open strCopyFromDoc

DeleteHeadersAndFooters objWordApp.documents(strCopyFromDoc)

objWordApp.documents(strCompyFromDoc).content.Copy

objWordApp.documents.Open strCopyToDoc
objWordApp.documents(strCopyToDoc).characters(objWordApp.ActiveDocument.characters.Count).Select

Set objRng = objWordApp.ActiveDocument.content   ' Range used so as not to overwrite original text
objRng.Collapse Direction:=0

If IsWordAppVersionLessThan2002(CInt(objWordApp.Version)) Then
    objRng.Paste
Else
    objRng.PasteAndFormat wdPasteDefault
End If

我已经尝试了粘贴和格式,但这没有帮助。 我使用的Word版本是2002 SP3,但我需要它与2002及以上版本一起工作。 VB6位于SP6。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我设法摆脱了这个问题。看起来它与文档有关,而不是代码。我已经将页眉和页脚从一个文档复制到另一个文档,这次似乎已经有效了。以前的复制尝试似乎没有任何区别。不是一个理想的解决方案,但至少它是有序的。

答案 1 :(得分:0)

我找到了解决方案,而且我想的更简单。只需在粘贴内容之前保存文档即可。这使Word保留原始边距定义。在我的代码中,我做到了。

Private Sub CommandButton4_Click()
Dim Item As String
Dim i As Integer
For i = 0 To ProcList.ListCount - 1
Dim docNew As Document
Dim docproc As Document
Set docNew = Word.ActiveDocument
docNew.Content.Copy
Set docproc = Documents.Add

With docproc
        .SaveAs FileName:=ProcList.List(i)
        Selection.ClearParagraphAllFormatting
        Selection.Paste

End With

Next i"