起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 160|回复: 6

请问调用vba如何结束进程?**

[复制链接]
发表于 2009-3-16 09:27:14 | 显示全部楼层 |阅读模式
请问我调用vba设置将导出的excel设置了字体和格式,但是导出的时候会提示一个对话框,请问如何屏蔽对话框?还有如何我导出后进程中的excel并没有关闭,如何关闭呢?

1.jpg

13.68 KB, 下载次数: 117

回复

使用道具 举报

发表于 2009-3-16 09:28:17 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-16 09:33:37 | 显示全部楼层
这个帖子我看过,而且我最后也释放了的 (o as System.IDisposable).Dispose;           当还是会有这个提示?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-16 09:47:22 | 显示全部楼层
sFileName := lSaveDialog.FileName;
         RowCount  := FDataGrid.SelectedCount;
         o         := ComObj.CreateOleObject('Excel.Application');
         app       := DispatchHelper.Create(o);
         app.PropertyPut('Visible', [false]);
         Workbooks  := DispatchHelper.Create(app.PropertyGet('Workbooks', []));
         Worksheets := DispatchHelper.Create(Workbooks.InvokeMethod('Open', [lSaveDialog.FileName]));
         sheet      := DispatchHelper.Create(Worksheets.PropertyGet('Worksheets', [1]));
         sheet.InvokeMethod('Select', []);
         //取使用范围的行数
         UsedRange := DispatchHelper.Create(sheet.PropertyGet('UsedRange', []));
         Cells     := DispatchHelper.Create(UsedRange.PropertyGet('Cells', []));
         Rows      := DispatchHelper.Create(Cells.PropertyGet('Rows', []));
         RowCount  := objecthelper.ToInt(Rows.PropertyGet('count', []));
         for i := 1 to RowCount do
         begin
              tRow := DispatchHelper.Create(sheet.PropertyGet('Rows', ));
              TFont := DispatchHelper.Create(tRow.PropertyGet('Font', []));
              TFont.PropertyPut('name', ['宋体']);
              TFont.PropertyPut('size', [12]);
         end;
         app.InvokeMethod('Save', []);
         Workbooks.InvokeMethod('Close', []);
         (o as System.IDisposable).Dispose;
回复 支持 反对

使用道具 举报

发表于 2009-3-16 11:52:22 | 显示全部楼层
这样看一下:      
o         := ComObj.CreateOleObject('Excel.Application');
         app       := DispatchHelper.Create(o);
         app.PropertyPut('Visible', [false]);
         workbookso :=app.PropertyGet('Workbooks', []);
         Workbooks  := DispatchHelper.Create(workbookso);
         Worksheets := DispatchHelper.Create(Workbooks.InvokeMethod('Open', [sFileName]));
         Worksheetso :=Worksheets.PropertyGet('Worksheets', [1]);
         sheet      := DispatchHelper.Create(Worksheetso);
         sheet.InvokeMethod('Select', []);
         //取使用范围的行数
         UsedRangeo :=sheet.PropertyGet('UsedRange', []);
         UsedRange := DispatchHelper.Create(UsedRangeo);
         Cellso := UsedRange.PropertyGet('Cells', []);
         Cells     := DispatchHelper.Create(Cellso);
          Rowso := Cells.PropertyGet('Rows', []);
         Rows      := DispatchHelper.Create(Rowso);
         RowCounto := Rows.PropertyGet('count', []);
         RowCount  := objecthelper.ToInt(RowCounto);
         for i := 1 to RowCount do
         begin
              tRowo := sheet.PropertyGet('Rows', );
              tRow := DispatchHelper.Create(tRowo);
              TFonto := tRow.PropertyGet('Font', []);
              TFont := DispatchHelper.Create(TFonto);

              TFont.PropertyPut('name', ['宋体']);
              TFont.PropertyPut('size', [12]);
              (TFonto as System.IDisposable).Dispose;
              (tRowo as System.IDisposable).Dispose;
         end;
         app.InvokeMethod('Save', []);
         Workbooks.InvokeMethod('Close', []);
         (Rowso as System.IDisposable).Dispose;
         (Cellso as System.IDisposable).Dispose;
         (UsedRangeo as System.IDisposable).Dispose;
         (Worksheetso as System.IDisposable).Dispose;
         (workbookso as System.IDisposable).Dispose;
         (o as System.IDisposable).Dispose;
回复 支持 反对

使用道具 举报

发表于 2009-3-16 13:23:49 | 显示全部楼层
加上 app.PropertyPut('DisplayAlerts', [false]);  应该就不会有1楼的错误了。
回复 支持 反对

使用道具 举报

发表于 2009-3-16 13:29:50 | 显示全部楼层
加上 app.PropertyPut('DisplayAlerts', [false]);  应该就不会有1楼的错误了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-24 00:04 , Processed in 0.043276 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表