2010-03-24 33 views
3

我其实是想一些代码,我从http://php.net/manual/en/class.com.php使用COM打开Word

<?php 
    // starting word 
    $word = new COM("word.application") or die("Unable to instantiate Word"); 
    echo "Loaded Word, version {$word->Version}\n"; 

    //bring it to front 
    $word->Visible = 1; 

    //open an empty document 
    $word->Documents->Add(); 

    //do some weird stuff 
    $word->Selection->TypeText("This is a test..."); 
    $word->Documents[1]->SaveAs("Useless test.doc"); 


    //closing word 
    $word->Quit(); 

    //free the object 
    $word = null; 
    ?> 

发现但这似乎并没有工作。我正在使用Word 2007,并且出现以下错误:

加载的Word版本12.0致命错误:调用未定义的方法variant :: SaveAs()在C:\ xampp \ htdocs \ final \ testq.php上的第14行

任何人都可以解决这个问题吗?是因为我使用Word 2007吗?

回答

1

Documents对象是一个集合对象,而不是阵列。尝试:

$word->Documents(1)->SaveAs("Useless test.doc"); 
在窗口7.

或者

$word->ActiveDocument->SaveAs("Useless test.doc"); 
+0

感谢您的答复。我收到相同的错误消息。 – chupinette

+0

@chupinette:试试'$ word-> ActiveDocument-> SaveAs(“Useless test.doc”);' –

+0

我也试过这个。同样的错误:( – chupinette

1

你的样品试验对我很好,都与Word 2003和Word 2007中,所以我认为这个问题可能是一个不正确的安装/配置字。有关疑难解答做到以下几点:

  • 修复的Word安装
  • 确保字已启动至少一次作为脚本下
  • 禁用运行在同一用户的所有加载项
  • %APPDATA%\Microsoft\Templates\并重命名Normal.dot(x)文件
  • 请确保您实际上有权将文件保存到指定的位置,请尝试使用绝对路径
+0

如何禁用所有加载项?我已经找到了普通文件,该文件是一个宏启用模板。要我应该改名?感谢您的帮助 – chupinette

+0

只要备份其名称中的Normal.dot(X)或删除它可以通过Office按钮 - > Word Options - > Add-ins逐个禁用加载项,然后从组合框中选择加载项类型,然后按Go ... –

+0

非常感谢。打算现在就试试吧。 – chupinette