我有一个遗留应用程序(Delphi 5),允许用户将数据导出到excel。据我所知,此应用程序适用于Office 2013之前的所有用户。我们最近开始推出Office 365/2013 - 在获得O365之后,一些用户无法再将数据导出到Excel。尽管我们可以告诉,对于这些用户来说,没有发生任何事情(Excel没有得到关注,没有新的工作表/选项卡添加到现有实例,如果Excel没有运行则不会启动)。其他已经获得O365的用户似乎对该应用程序没有任何麻烦。
几个月前,我们在收到Office 2013(非O365)后遇到了用户遇到此问题。在进行任何编码/重要研究之前,用户被赋予了不同的硬盘(我认为这是她以前的硬盘,但我不是100%肯定),瞧,一切都适合她。这让我相信它可能是注册表设置或其他一些配置问题。
是否有人知道可能导致/解决此问题的任何注册表设置/应用程序配置设置,我们是否必须重新编写导出数据的逻辑,或者还有其他我不想要的内容?
供参考,以下是执行导出到Excel的代码段(我添加了'ExcelApplication1.Connect;',如此处所示http://www.djpate.freeserve.co.uk/AutoExcl.htm#StartingExcel - 但是,这不能解决问题):
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls,// excel_tlb,
Forms, Dialogs, checklst, Buttons, ToolWin, ComCtrls, Menus, Grids, DBGrids,
ExtCtrls, Db, DBTables, DBClient, About, Report, IniFiles, Cdberr32,
Ulogin32, ComObj, olectnrs, Find, ImgList, excel97, OleServer, clipbrd,
AppEvnts;
. . .
procedure TfrmMain.btnExportClick(Sender: TObject);
var
RangeE :Excel97.range ;
I, Row : integer ;
myClip : TClipBoard ;
Arr : variant ;
j : integer ;
begin
//Replacing zoli code with OLE server code GM
//Create and show Excel spread sheet
if qrylocations.RecordCount = 0 then
Exit;
try
//Replace the after scroll procedure slows down process.
qrylocations.AfterScroll := DummyMethod ;
//Open Excel App and create new worksheet
ExcelApplication1.Connect;
ExcelApplication1.Visible[0] := True ;
ExcelApplication1.Workbooks.Add(Null, 0) ;
Arr := VarArrayCreate([1,qryLocations.Recordcount,1,3],varvariant) ;
//Set teh data to the variant array
with qryLocations do
begin
First;
DisableControls ;
for i := 0 to recordcount -1 do
begin
Arr[i+1,1] := Fields[0].ASstring ;
Arr[i+1,2] := Fields[2].ASstring ;
Arr[i+1,3] := Fields[5].ASstring ;
Next ;
end ;
end ;
//Set the excel worksheet to the variant array
ExcelApplication1.Range['A1', 'C' + IntToStr(qrylocations.recordcount)].value := Arr ;
finally
qryLocations.EnableControls;
//Reset the after scroll method back to original state
qrylocations.AfterScroll := qryLocationsAfterScroll ;
end ;
end;
ExcelApplication1的属性如下:
答案 0 :(得分:1)
我怀疑问题是较新版本的Office在“虚拟沙箱”中运行,这种伪虚拟机无法“看到”您计算机上安装的所有内容以及从非Office应用程序自动执行Office的传统方法更长的工作,因为您的应用程序无法“看到”Office已安装。
请查看Is it possible to automate a Click-to-run application?了解详情。