我继承了一个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。
提前感谢您的帮助。
答案 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"