请问在Delphi中如何执行如下VBA语句(100分)

  • 主题发起人 主题发起人 jjRzs
  • 开始时间 开始时间
J

jjRzs

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在Delphi中如何执行VBA语句:
Range("A12:R96").Select

Selection.Subtotal GroupBy:=1, Function:=xlCount, TotalList:=Array(3, 5, 7, _
9, 11, 13, 15, 17), Replace:=True, PageBreaks:=False, SummaryBelowData:=True
这是Excel中的分类汇总统计.
 
var
excelapp,sheet1:olevariant;
begin
sheet1.Range('A12:R96').Select;
sheet1.Selection.Subtotal(
GroupBy:=1,//vb中的写法和delphi一样,
Function:=xlCount,
TotalList:=VarArrayOf([(3, 5, 7, 9, 11,13, 15, 17]),
Replace:=True,
PageBreaks:=False,
SummaryBelowData:=True)
end;
 
to chenshaizi:

你的方法调试过吗?
 
www.Baidu.com SEARCH一下 ,一打把
 
找过了,
只是TotalList:=Array(3, 5, 7, 9, 11, 13, 15, 17)在Delphi中不知道怎么表示?
 
sheet1.Selection.Subtotal(
1,
xlCount,
5, 7, 9, 11,13, 15, 17,
True,
False,
True)
 
to babibean:
你的方法明显不对嘛,Subtotal哪有那么多参数啊?
其中的TotalList:=Array(3, 5, 7, 9, 11, 13, 15, 17)只是用一个参数传递的,我用过数组,但是没有通过,不知道为什么?
 
我在大富翁离线上看到的,好像是对的,我没有试过。
 
简单,按下面的就行了:
const
xlCount = $FFFFEFF0;
var
XlsApp: OleVariant;
begin
XlsApp := CreateOleObject('Excel.Application');
try
XlsApp.WorkBooks.Open('D:/a.xls'); //这里换成你的文件路径
XlsApp.ActiveSheet.Range['A12:R96'].Select; //注意选择的区域,我不明白你为什么选了整整一大片
XlsApp.Selection.Subtotal(1, xlCount, VarArrayOf([3, 5, 7, 9, 11, 13, 15, 17]),
True, False, True);
XlsApp.Visible := True;
except
if not VarIsEmpty(XlsApp) then
XlsApp.Quit;
end;
XlsApp := Unassigned;
end;
 
谢谢vvyang,谢谢大家!问题搞定了。[:D]
 
谢谢大家!
 
不好意思,劳烦大家!
还有这个:
Range("A5:R10").Select
Selection.Sort Key1:=Range("E5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal

我主要不知道 Key1:=Range("E5") 在Delphi中怎么表示?
 
后退
顶部