【问题标题】:How to get the file name of ms word which is currently open如何获取当前打开的ms word的文件名
【发布时间】:2015-08-11 19:54:41
【问题描述】:

我在 Php 中使用 COM,我想获取当前打开/活动的 ms word 文件的文件名。当我使用下面的代码时,它只给我输出“Microsoft Word”,但我也需要文件名。

$word = new variant(com_get_active_object("word.application")); 
echo "$word";

【问题讨论】:

    标签: php com


    【解决方案1】:

    您将需要与应用程序对象进行交互。

    Here is the reference

    它说,例如,它有一个属性来获取 ActiveDocument。 并且活动文档有一个名为 FullName 的属性,它是一个包含文件完整路径的字符串。

    我不知道 PHP 语法,但应该类似于

    $document = word.ActiveDocument
    $filename = document.FullName
    

    【讨论】:

    • 我按照您描述的方式使用,但我收到以下错误致命错误:未捕获的异常 'com_exception' 带有消息'来源: Microsoft Word
      说明: 此命令不可用,因为没有打开任何文档。'在
    • 这是我现在的代码 $word = new COM("word.application") 或 die("无法实例化 Word"); $document = $word->ActiveDocument; $file = $document->FullName;
    • 是的,我将使用下面的代码获取文件名,就像你所说的那样 $input = "c:\\test.docx"; $word = new COM("word.application") 或 die("无法实例化 Word"); $Word->打开($输入); $document = $word->ActiveDocument; $file = $document->FullName;
    • 但这不是我需要的确切解决方案。在这里,我应该在我正在使用的代码中给出路径并打开 ms 字,它会像上面一样返回我的文件名。但是我需要在不从代码中传递文件名的情况下获取文件名,如果我打开并保留了一些 doc 文件,那么代码应该返回当前打开的任何 doc 文件的文件名
    • 我明白了。看来您应该检查 application.Documents.Count > 0 因为 ActiveDocument 在没有打开时引发异常。您应该尝试类似 $word = new COM("word.application") 或 die("Unable to instantiate Word"); $documents = $word->文档->计数;然后检查它是否大于零。然后你可以请求活动文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多