2017-05-27 100 views
0

我在Windows 10 64位上使用Delphi X10和Word 2016 64位。 我总是使用ComObj。 例如:如何在Delphi中使用Word和Excel?

uses ComObj; 


procedure TForm1.RzBitBtn1Click(Sender: TObject); 
var Excel: variant; i, j: word; 
begin 
    Excel := CreateOleObject('Excel.Application'); 
    Excel.Workbooks.Open('file.xls'); 
    for i := 1 to 5 do 
    for j := 1 to 5 do 
    StringGrid1.Cells[j, i] := Excel.Sheets[1].Cells[i, j].Text; 
end; 

但是,我想用autocompleate为Excel方法。我读了我应该导入类型库,但我无法找到我的系统中的类型库文件。

+0

那么,是什么问题?如果系统中没有类型库,我们可以提供什么帮助?只需检查它们是否由Office安装程序安装(也许它们不是默认情况下)。 – Victoria

回答

0

这是很容易做到的,只要用于Excel anmd Word中的类型库正确注册。

转到下你的Delphi的OCX \服务器文件夹中安装并找到Word2010.Pas。将其添加到新的VCL项目中,并将其用于主窗体的单元中。在主窗体上声明表单变量A: WordApplication

做完这些后,你应该能够去到Form1的Form.Create,类型

A. 

,并自动完成你应该提供WordApplication的方法和属性的可能性。

现在,打开Word2010.Pas并找到部分

// File generated on 2/20/2013 5:56:45 PM from Type Library described below. 

// ************************************************************************ // 
// Type Lib: c:\Program Files\Microsoft Office\Office14\msword.olb (1) 
// LIBID: {00020905-0000-0000-C000-000000000046} 

,告诉您的名字和其用于生成Word2010.Pas类型库的位置。

现在,除非你需要使用已添加到Word/Excel中,因为2010年版,Word2010.Pas和Excel2010.Pas可能是所有你需要一些方法/属性。但是,您可以使用Delphi导入更新版本的类型库,并为其生成一个导入单元。具体怎么做取决于你的Delphi版本,但对于Delphi西雅图。你只需转到Component |从IDE主菜单导入组件,然后在弹出窗口中选择Import type library并按照向导的提示进行操作。

一旦你产生的进口单位,很明显,你只需使用在您的项目,而不是MSWord2010。

顺便说一句,严格来说,没有“德尔福X10”,最近的版本(因为XE8)已经西雅图,柏林和东京。

+0

感谢您的回答。 问题是,似乎没有类型库在系统中,也许是因为办公室是64位。没有单词或Excel,只有一些Office。 https://ibb.co/jQ7QTF –

+0

听起来像是你可能会做的第一件事是验证Word2010.Pas是否适用您的系统上。如果没有,您需要为Excel和Word找到64位类型库的名称,如果可以的话,注册它们,然后引用例如https://bobsotherblog.wordpress.com/2013/09/19/import-64bit-type-libraries-in-delphi/了解如何导入它们。如果您想要的所有功能都是在IDE中自动完成的,那么看起来可能是一个麻烦的过程。 – MartynA