【问题标题】:Calling Excel from VFP9 on 64-bit machine在 64 位机器上从 VFP9 调用 Excel
【发布时间】:2016-07-21 14:47:31
【问题描述】:

我有一个 VFP9 应用程序,它使用自动化生成 Excel 文件,开头为:

**oExcel = CREATEOBJECT(“Excel.Application”)
oWorkbook = oExcel.Workbooks.Add()**
. . .

正在使用 Excel 2013。然后填充、格式化和保存工作表。这在 Windows 7 32 位机器上运行良好。但是在 Windows 7 64 位机器上,一些指令会失败。特别是:

**oworkbook.SaveAs(<NewFilename>)**

失败并显示消息“无法获取工作簿类的 SaveAs 属性”

作为一种解决方法,我在创建 Excel 对象之前创建,然后调用:

**oworkbook.Save ()**

这行得通。是否有其他用户经历过这种情况;在 64 位机器上运行时,从 VFP 使用 Excel 是否还有其他限制。

谢谢

【问题讨论】:

    标签: excel 64-bit visual-foxpro


    【解决方案1】:

    oWorkbook.SaveAs() 和 oWorkbook.Save() 在 64 位机器上都没有任何问题(我假设您的意思是 windows (7/8/10) 64)。你的问题应该是别的。

    【讨论】:

    • 谢谢切廷。你给出了一个有用的指针。正如我所提到的, Save() 没有问题;这一直有效。但 SaveAs() 在 Excel 2003 和 Excel 2013 下的工作方式似乎略有不同。如果包含第二个参数 xlExcel8 (=56) - 以指定 .xls 输出,则在使用 Excel 2003 时似乎会引发错误;我会进一步调查。所以我认为问题与Excel版本有关,而不是与Windows版本有关。再次感谢您的帮助。
    • 啊,那应该解释一下。 Excel 2003 无法识别 xlExcel8 (56) 值,而 2013 可以。为什么要保存为 Excel 8。xlWorkbookNormal 很好(或没有格式参数)。
    【解决方案2】:

    我遇到过同样的问题,但问题是用户使用的 Excel 版本与我不同。这不是 64 位与 32 位的区别。我通过定义解决了它:

      #define xlNormal 39
    

    即设置工作簿的目标版本。这是一个关于枚举的页面:https://msdn.microsoft.com/en-us/library/office/ff198017.aspx

    我还发现,在我最多保存 50 个的应用程序中,我必须打开,设置保存标志,做我的工作,然后说 SaveAs。

    祝你好运 :) 请考虑关闭这个问题。我想你会得到两分。

    【讨论】:

    • 谢谢小姐。我很高兴结束这个问题。我怎样才能做到这一点? - 或者你能为我做那件事。
    • 看到 0 了吗?在它下面是一个向下箭头。在它下面是一个复选标记,如果您将鼠标悬停,您可以看到它。单击复选标记。还可以点击 0 顶部的向上箭头查看所有答案,以感谢所有帮助过您的人。
    • 谢谢小姐。会这样做。我不完全记得,但我似乎记得一个叫 Cetin 的成员反应很快。我觉得我应该感谢他的答复。我可以这样做吗/
    • 绝对 - 您应该检查对解决您的问题最有帮助的答案。然后,您可以在 0 上向上箭头,因为我们都花时间帮助您,您可以根据需要提供尽可能多的人。不能有超过一个“解决方案”或复选标记。
    猜你喜欢
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-17
    • 1970-01-01
    相关资源
    最近更新 更多