c++ - 自定义客户端应用程序-需要控制文档保存位置的能力

标签 c++ visual-c++ ms-word lotus

可以,然后呢。我需要一些指导。对于这篇文章的篇幅,我深表歉意,但我需要提供一些细节:

我有一个对我感兴趣的人为他们做一个小项目。通常,该应用程序是一个非常简单的员工记录/文档应用程序,但是它大量使用了模板化的Word和Lotus文档。这样的想法是,您选择员工的“事件”,例如表彰,晋升,纪律等,然后加载适当的模板文档,然后从中填写,然后选择员工,查看所有“事件”, ”并查看与每个文档相关联的单个文档。

因此,应用程序必须在用户完成后知道.docs的保存位置。

客户端实际上有一个此应用程序的v1版本(它不对文件或任何内容进行任何管理,只是通过要在system()调用中启动要在新实例中查看的文档的Word / Lotus。)尚未进入详细的需求阶段,但是我和客户都同意,要使其真正起作用,对用户将.doc保存到的位置进行某种控制非常关键,因为否则应用程序会为他们提供模板文档的新副本,它们在其他位置“另存为”,并且应用程序指向它提供给他们的空白副本。

显然,我无法想到通过启动Word的新实例以任何方式实现“另存为”限制/控制的方法。当您选择一个模板时,客户端会想到使用模板文档在应用程序中嵌入Word / Lotus实例,但对此我几乎没有保留:

  • 我已经在网上进行了挖掘,并且读到我借用MSWORD.OLB的Word的哪个版本将是最终用户所需的版本?
  • 我已经尝试过从here嵌入Word文档的MSDN示例,但是随着我逐渐习惯,MSDN示例甚至没有编译。
  • 即使我能弄清楚如何将.doc文件嵌入到他们的应用程序中,我也不知道我可以控制“另存为...”的使用。
  • 所有这一切还没有涉及Lotus(!)

  • 因此,……本能地,我觉得嵌入式Word / Lotus要做的事情最终要比其值得做的更多。

    因此,我还提出了其他一些想法。
  • 一个人正在研究使用Office XML(如果有Lotus等效的话),并分别获取用户的“输入”并每次都即时生成文档。我对这个想法并不特别兴奋,但是我认为它可以奏效,只要我使用旧功能尝试并保持向后兼容。
  • 分别获取用户的“输入”并生成HTML文档。嗯作品,跨平台,很容易解析和理解,但是如果您希望将其通过电子邮件发送给某人(通过电子邮件发送.html的作品,是的,是的,这是非常不常规的,对普通用户而言是不受欢迎的),甚至不好更糟的是,如果您需要通过电子邮件将其发送给某人以进行修订…
  • 也许某种可编辑的PDF?我知道那里有PDF库,而且我在它上炖的越多,这听起来越像是最好的选择,尽管我对PDF的工作还不多,而且我不知道它们是多么容易嵌入/有什么选择创建它们时就有一个。我知道他们可能会被储蓄残障,我以前曾用过流血的州税。

  • 我需要在这里输入一些信息。这是TLDR问题:
  • 是否给每个.doc文件启动一个Word的新实例,就像我认为的那样糟糕,因为用户可以在任何地方“另存为”文档,然后应用程序指向空白文档?
  • 是否正在尝试支持嵌入式Word,我觉得这是一件麻烦事,因为它觉得工作量大/值(value)不菲/可能会在支持Word的多个版本方面引起问题? (是否具有向前兼容性以及当前发布的版本?)
  • 对PDF计划有何想法?
  • 还有其他好主意吗?
  • 最佳答案

    Word确实允许通过其对象模型对“保存”和“另存为”控件进行编程。用VBA编码并放置在Word模板中的所有子例程都将复制到该模板生成的所有文档中。另外,大多数菜单和功能区命令都可以通过创建一个模块来拦截,该模块包含为被拦截的命令命名的子例程。因此,例如,如果模块包含一个名为FileSaveAs()的子项,则将执行该子项中的任何代码,而不是标准的File | Save As命令。最后,此代码将替换通过击键,工具栏,菜单或功能区执行的另存为命令。

    每当执行“保存”或“另存为”命令时,下面的代码将启动一个到预定路径的对话框:

    Sub FileSave()
    ControlSaveLocation
    End Sub
    
    Sub FileSaveAs()
    ControlSaveLocation
    End Sub
    
    Sub ControlSaveLocation()
    Dim Directory As String
    Directory = "C:\Documents\"
    With Application.Dialogs(wdDialogFileSaveAs)
        .Name = Directory
        .Show
    End With
    End Sub
    

    希望这可以帮助。

    关于c++ - 自定义客户端应用程序-需要控制文档保存位置的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7034662/

    相关文章:

    c++ - 在 parallel_for 中使用函数对象

    visual-studio - 在 Visual Studio 中构建时,LoadLibrary 无法加载错误代码 126 的 dll

    c++ - 相同方法签名的模板化和显式参数类型版本

    C++删除与分配位置不同的函数中的存储空间

    C++ mktime 更改我的 tm_struct 的值

    c++ - 如何在 C++ 中将 int 转换为 char*(string)?

    c++ - 通过名称获取指向数据成员的指针

    c# - 如何使用c#/VB.NET在word中插入书签

    c# - 我可以使用 Base64String 中的 body.insertFileFromBase64 来自 doc 文件而不是 docx

    javascript - 我需要通过office.js删除word消息