Delphi5 控制 Excel2000 心得(0分)

  • 主题发起人 主题发起人 sandy suen
  • 开始时间 开始时间
to 小小武:
如果是要调用delphi中的事件,需要编写activex控件,在delphi中编译生成.ocx文件
后,在使用vba时在"控件工具箱"加入该控件,你就可以使用你在delphi中定义的事件
与属性了。

to flypuma:
1.在excel通过手工操作添加的菜单是永久性的,通过vba代码添加的菜单可以
是永久性的,也可以是临时性的
2.手工操作添加永久性菜单步骤如下(假设事先有一个宏 test):
(1)在excel的菜单栏中右击->自定义->命令,在左边的"类别"中有两项:"宏"和
"新菜单",
(2)如果你要添加菜单项,就选择"宏",之后在右边的"命令"中会出现"自定义菜单项"
和"自定义按钮",根据需要把其中的一个比如:"自定义菜单项",拖放到excel菜单栏中,
这样,在excel 菜单中就会出现一个名为"自定义菜单项"的菜单。右击excel菜单的
"自定义菜单项",你就可以设置该菜单的各种属性包括"指定宏"了.
(3)如果你要添加级联菜单,就选择"新菜单",同样把右边的"命令"中的"新菜单"
拖放到excel菜单栏中,然后按照(2)的方法把"自定义菜单项"拖放到excel的"新菜单"中.
3.这里是用代码添加菜单的方法:
Sub test()

'以下添加名为 "MyMenu"的临时性菜单栏,若要永久性的则为Temporary:=false
with Application.CommandBars.Add(Name:="MyMenu", Temporary:=True)
.Visible = True

'以下在 "MyMenu"的菜单中添加 " 新增 "菜单项,"NewUnit"是事先写好的vba的宏
With .Controls.Add(Temporary:=True)
.Visible = True
.Enabled = True
.Caption = " 新增 "
.Style = msoButtonCaption
.OnAction = "NewUnit"
End With

With .Controls.Add(Temporary:=True)
.Visible = True
.Enabled = True
.Caption = " 读取软盘 "
.Style = msoButtonCaption
.OnAction = "GetDataFromSoftDisk"
End With


End With
End Sub
其实,你也可以把手工添加菜单的过程录制一个宏,分析它的宏代码,结合看看帮助,
了解excel对象的方法和属性,实际上我当初也是这样自学的.
祝你成功!
 

13) 指定边框线宽度:
ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-顶 4-底 5-斜( / ) 6-斜( / )
excel97和excel2000里,数字代表的边框对应是不同的。
 
如何知道一个表中有多少行?
 
to:如何知道一个表中有多少行?
假设该表的左上角在单元格 a1,并且该表中间没有空行和空列,则:
sheets['sheet1'].range['a1'].CurrentRegion.rows.count
返回该表的行数,Columns返回该表的列数
 
控制word的方法呢?怎么没人了:)
 
I encounder a problem,
if there are 2 or 3 WorkSheets in Excel WorkBook.
I want to move a chart to sheet3,
eg
Excel_workbook.ActiveChart.Location(xlLocationAsObject, 'Sheet3');

but it is not work, the chart is still in first sheet.
 
我也请教一个问题:
我在用delphi的控间输出到excel时,总是在关闭第一次输出的excel报表后,接着再点击输出按钮,
excel这是只有主窗口,看不到excelworkbook和excelworksheet,如果我再加一个按钮将excelapplication
disconnect,就没有问题了,可是不能要求客户每次都要记得点击这个按钮阿,我应该怎样解决呢?
 
to yyanghhong:
首先请检查你在执行移动语句之前是否选中了该图表,因为只有选中了才能用
ActiveChart这个属性,如果是,则试试以下语句(假设要将sheet1中的图表移到sheet3):
Excel_workbook.sheets['sheet1'].ChartObjects[1]
.chart.Location(xlLocationAsObject,'Sheet3');

to dongxsoft:
生成excel对象后,先设该对象不激活,如 var_excel.visible:=false;
(具体是 active 还是 visibale 我不记得了).然后接着写你的打印语句,
最后再激活excel对象.

以上没有经过测试,如果你测试通过后,或有了更好的方法,请放张贴上来.
 
to 请问如何在代码中设置单元格格式?:
....range['a1'].HorizontalAlignment:= xlCenter //垂直居中
.........VerticalAlignment:=xlLeft //水平居左
with ....range['a1'].Font
Name:= '黑体'
FontStyle:='常规'
Size:= 9
end with

....
 
请问如何在代码中设置单元格格式?不是说这个格式而是水
列的格式就是输入值的格式,我的9999999999999999 输进去竟然
成了科学技术法, 再代码里 ,用STRING赋予的啊
 
to 黄忠伟
设置var_excel.visible:=false;不管用,我的源代码如下:
procedure ExcelConnect;
begin
with DataMod do
begin
try
ExcelApp.Connect;
except
Showmessage('系统是否正确安装了Excel?');
Abort;
end;
// ExcelApp.Visible[0]:= True; //此句已改到所有数据输出完成后再调用
ExcelApp.Caption:= '电压合格率统计报表';
ExcelApp.Workbooks.Add(Null,0);
ExcelBook.ConnectTo (ExcelApp.WorkBooks[1]);
ExcelSheet.ConnectTo (ExcelBook.WorkSheets[1] as _Worksheet);
end;
 
to dongxsoft:
我是用ole对象的,比如creatOleObject,好处是可以直接用excel的属性和方法,
就像在vba中操作的一样,具体的你可以搜索一下,我就懒得写了,如果你要源码,我再贴上来,
 
好东西,今天才见到,谢谢!!!!
 
怎么改变单元格里格式啊?我说的是数字格式不是字体格式
EXCEL默认格式为常规,输入过长的数字变会变为科学计数法的
 
如何将一个有公式的报表存成一个只有值的表也就是说另存的报表中不含公式,只含值
 
to 火龙真人:
.range['a1'].NumberFormatLocal ='#,##0.00';
to yypeng:
将整个表选中,"复制"-->"编辑/选择性粘贴"-->在 粘贴 的选项中 "数值",确定后
即可.
 
TO 忠伟兄,不行啊,我现在单元格里根本就不是数字型的啊
怎么把常规设置为文本呢或数字类型呢?这样就可以解决我输入
的身份证号不变为科学计数法。
 
to 火龙真人:
1,在代码中写: .range['a1'].NumberFormatLocal ='@';
2,在excel中按右键,选"设置单元格格式"-->"数字",在分类中选"文本"
3,在excel中,当单元格是常规设置时,输入前,先输一个单引号,再输身份证号码,
如: '45030212345678
 
TO 忠伟兄 ,谢谢问题解决用 range['a1'].NumberFormatLocal ='0'
但这是自定义格式如何转为EXCEL预选的数字格式或文本格式呢?
 
后退
顶部