【问题标题】:Problems saving document immediately after Document Merge文档合并后立即保存文档的问题
【发布时间】:2018-02-16 21:27:43
【问题描述】:

我有一个应用程序,我需要合并几个几乎相同的文档,这些文档已发送给多个用户并收到了一些细微的更改和 cmets。文档相当大(500K - 1M),可以包含表格和嵌入的图形。这样做的目的是将来自不同用户的更改和 cmet 合并到一个文档中,跟踪谁做了什么或说了什么。

核心是以下使用Application.Merge的过程。

Public Sub runMerge(files As String)

    Dim i As Integer
    Dim v() As String

    v = Split(files, vbCr)

    Word.Application.ScreenUpdating = False
    Word.Documents.Open fileName:=v(0), ReadOnly:=False, addtorecentfiles:=False

    For i = 1 To UBound(v)
        ActiveDocument.Merge fileName:=v(i), _
            MergeTarget:=wdMergeTargetCurrent, _
            DetectFormatChanges:=True, _
            UseFormattingFrom:=wdFormattingFromCurrent, _
            addtorecentfiles:=False
        DoEvents
    Next i

    Word.Application.ScreenUpdating = True
    Word.Application.ScreenRefresh

    ActiveDocument.SaveAs2 "Merge " & Replace(Now, ":", "."), , , , False

End Sub

代码显式打开第一个文件,然后循环合并其余文档。除了有点脆弱之外,只要第一个文档被显式打开,它就可以正常工作。

合并后,我使用 SaveAs2 和一个新的非限定文件名(即没有明确的目录)。这很好用。

但是,如果我尝试使用SaveAs2 将文件放在不同的目录中,如

ActiveDocument.SaveAs2 "C:\.....\Merge " & Replace(Now, ":", "."), , , , False

合并后生成的文档不会重新出现在屏幕上。此外,当稍后明确打开时,该文档似乎以某种方式损坏,格式奇怪,在一种情况下,某些文本以橙色显示。此行为已在 Word 2013 和 2016 中看到。

除了将文档保存在任何默认目录(在我的情况下为“我的文档”),然后使用copyKill 在VBA 中显式移动文件之外,如果没有额外的步骤,如何保存它?

【问题讨论】:

  • 我有点迷茫,到底存不存?你是说它可以保存但格式很奇怪吗?如果路径是有效和无效代码之间的唯一区别,请尝试不同的路径。您的路径是否正确且位置是否可写?
  • @Andy G 它确实保存了,但生成的文档似乎已“损坏”
  • 如果您完全注释掉 SaveAs,以便在代码完成时查看生成的文档,然后将其作为用户保存到不同的目录 - 那么结果是什么?我的怀疑是,不知何故,当您的代码执行 SaveAs 时,Merge 过程还没有完全完成 - 在后台正在进行异步操作。但是,如果您的手动 SaveAs 显示同样的问题,那就是另外一回事了……
  • @CindyMeister 这听起来很有希望,因为当文档最终在合并后重新出现时,所有更改都需要一些时间(一两分钟)才能完全出现。在第一页可见后,Word 仍在处理它(很长时间)。
  • @CindyMeister 手动保存到其他目录按预期工作。

标签: vba ms-word


【解决方案1】:

最后,我做了以下解决保存问题。

  • 使用超级简单的 FileCopy VBA 功能,我将合并组中的第一个文件复制到我希望合并文件结束的目录。

  • 合并循环保持不变。

  • 合并循环完成后,我使用了之前帖子中的解决方案VBA word table copy loses dataActiveDocument.Select,然后是Selection.Collapse

  • ActiveDocument.Save,不是SaveAs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 2016-08-10
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多