起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 448|回复: 4

VBA宏如何转化成平台代码

[复制链接]
发表于 2010-11-16 09:31:47 | 显示全部楼层 |阅读模式
我们在VBA中有一句VB代码为:
With ActiveCell.Characters(Start:=2, Length:=1).Font
这段代码在平台中如何转化。请帮忙看一下
在平台中用的是DispatchHelper
回复

使用道具 举报

 楼主| 发表于 2010-11-16 10:26:06 | 显示全部楼层
自已解决了
回复 支持 反对

使用道具 举报

发表于 2010-11-16 10:49:23 | 显示全部楼层
楼主分享下吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-11-17 09:03:33 | 显示全部楼层
var
  lOExcel,lOWorkBook,lORange,lOSheetNum,lOWorksheet,lOActiveCell1,lOActiveCell2bject;
  lOAD,lOTemp,lOFont,lOCharactersbject;
  lApp,ldocs,ldoc,lRange,lADoc,lActiveCell1,lActiveCell2:system.DispatchHelper;
  lWorksheet,lFont,lCharacters:system.DispatchHelper;
  lSaveDialog:TOpenDialog;
begin
  lSaveDialog :=TSaveDialog.Create(nil);
  lSaveDialog.Filter :='Microsoft Excel (*.xls|*.xls|All files (*.*)|*.*';
  if not lSaveDialog.Execute then   exit ;
  if FileExists(lSaveDialog.FileName+'.xls')  then
  begin
    if JsDialogs.ConfirmBox('该文件已经存在,是否要覆盖该文件?','询问',2)=false
     then
      exit;
  end;
  lOExcel :=Comobj.CreateOleObject('Excel.application');
  lapp :=system.DispatchHelper.create(lOExcel);
  lOWorkBook:=lApp.PropertyGet('WorkBooks',[]);
  ldocs :=system.DispatchHelper.Create(lOWorkBook) ;
  ldocs.InvokeMethod('ADD',[]);
  lORange:=lapp.PropertyGet('Range',['B1']);
  lRange :=system.DispatchHelper.Create(lORange);
  lRange.InvokeMethod('Select',[]);
  lOActiveCell1 :=lapp.PropertyGet('ActiveCell',[]);
  lActiveCell1 :=system.DispatchHelper.Create(lOActiveCell1);
  lActiveCell1.PropertyPut('FormulaR1C1',['T70']);

  lOActiveCell2 :=lapp.PropertyGet('ActiveCell',[]);
  lActiveCell2 :=system.DispatchHelper.Create(lOActiveCell2);
  lOCharacters:=lActiveCell2.PropertyGet('Characters',[2,1]);  //取第2个字符
  lCharacters :=system.DispatchHelper.Create(lOCharacters);
  lOFont :=lCharacters.PropertyGet('Font',[]);
  lFont :=system.DispatchHelper.Create(lOFont);
  lFont.PropertyPut('Subscript',[1]); //下标

  lOCharacters:=lActiveCell2.PropertyGet('Characters',[3,1]); //取第3个字符
  lCharacters :=system.DispatchHelper.Create(lOCharacters);
  lOFont :=lCharacters.PropertyGet('Font',[]);
  lFont :=system.DispatchHelper.Create(lOFont);
  lFont.PropertyPut('Superscript',[1]);  //上标

  lOAD:=lApp.PropertyGet('ActiveWorkbook',[]);
  lADoc:=System.DispatchHelper.Create(lOAD);
  lADoc.InvokeMethod('saveas', [lSaveDialog.FileName+'.xls']);
  //ldocs.InvokeMethod('saveas', [lOpenDialog.FileName+'.xls']);
  //保存不了 ,必须用激活的workbook
  lADoc.InvokeMethod('Close',[]) ;
  ldocs.InvokeMethod('close',[]) ;
  lApp.InvokeMethod('Quit', []);
  (lOAD as System.IDisposable).Dispose ;
  (lOActiveCell1 as system.IDisposable).Dispose;
  (lOActiveCell2 as system.IDisposable).Dispose;
  (lOCharacters as system.IDisposable).Dispose;
  (lOFont as system.IDisposable).Dispose;
  (lORange as System.IDisposable).Dispose;
  (lOWorkBook as System.IDisposable).Dispose;
  (lOExcel as System.IDisposable).Dispose;
  jsDialogs.ShowMsg('生成excel成功!','提示');
回复 支持 反对

使用道具 举报

发表于 2010-11-17 10:11:17 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-6 01:57 , Processed in 0.038981 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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