关于vfp控制excel、word的常用东东
头大 mailto:ppp1117@163.com
大家对vfp中通过OLE调用excel、word完成报表、数据转换等功能还感兴趣,请按以下步骤得到完整的VBA帮
助:
1、安装ms office 97/2000;
2、启动excel、word,单击“工具”-“宏”-“Visual Basic编辑器”进入,再选“帮助”菜单即可(注
意:第一次使用VBA帮助会提示插入光盘安装VBA帮助的)。
现将excel下常见的东东搜集整理如下:
1.创建Excel对象
_ole_excel = CreateObject("Excel.Application")
2.打开指定工作表
_ole_excel.WorkBooks.Open("工作表文件名") && 要打开的工作表名(xls)必须是全路径
3.添加新工作簿
_ole_excel.WorksBooks.Add
4.激活指定的工作簿
_ole_excel.WorkSheets("工作簿名").Activate
5.设置Excel对象为可见,一般为调试用
_ole_excel.visible = .t.
6.更改Excel对象标题栏
_ole_excel.Caption = "VFP程序OLE调用Excel"
7.给单元格赋值
_ole_excel.cells(行,列).value = 变量 && 重要,一般由VFP传递数据给excel即由此句,可以是
VFP支持的任何数据
8.设置指定列的宽度
_ole_excel.ActiveSheet.Columns(列).ColumnWidth = 字符个数
9.设置指定行的高度(默认单位:磅)
_ole_excel.ActiveSheet.Rows(行).RowHeight = 1/0.035 && 设定行高为1厘米,1磅=0.035厘米
10.在第18行之前插入分页符
_ole_excel.WorkSheets("Sheet1").Rows(18).PageBreak = 1
11.在第4列之前删除分页符
_ole_excel.ActiveSheet.Columns(4).PageBreak = 0
12.设置四个边框线条的类型及风格
_ole_excel.ActiveSheet.Range(范围).Borders(线型).LineStyle = 1 && 范围指起止的单元格,
如"B1:H9";
Borders为边框线条:1-左,2-右,3-顶,4-底,5-斜线\,6-斜线/;
LineStyle为线型参数:1-细实线,2-细虚线,……4-点虚线,……,9-双细实线
13.指定边框线宽度(Borders为边框线条,参见上条;默认单位:磅)
_ole_excel.ActiveSheet.Range(范围).Borders(线型).Weight = 2
14.设置页眉
_ole_excel.ActiveSheet.PageSetup.CenterHeader = "什么什么报表"
15.设置页脚
_ole_excel.ActiveSheet.PageSetup.CenterFooter = "第&P页"
16.设置页眉到顶端边距
_ole_excel.ActiveSheet.PageSetup.HeaderMargin = 2/0.035 && 2厘米
17.设置页脚到底边边距
_ole_excel.ActiveSheet.PageSetup.FooterMargin = 3/0.035 && 3厘米
18.设置顶边距
_ole_excel.ActiveSheet.PageSetup.TopMargin = 3/0.035 && 3厘米
19.设置底边距
_ole_excel.ActiveSheet.PageSetup.BottomMargin = 3/0.035 && 3厘米
20.设置左边距
_ole_excel.ActiveSheet.PageSetup.LeftMargin = 3/0.035 && 3厘米
21.设置右边距
_ole_excel.ActiveSheet.PageSetup.RightMargin = 3/0.035 && 3厘米
22.设置页面水平居中
_ole_excel.ActiveSheet.PageSetup.CenterHorizontally = .t.
23.设置页面垂直居中
_ole_excel.ActiveSheet.PageSetup.CenterVertically = .t.
24.设置页面纸张大小,重要!很多网友需要的东东
_ole_excel.ActiveSheet.PageSetup.PaperSize = 纸张类型 && 下面列出常见的纸张;
可为下列 XlPaperSize 常量之一(某些打印机可能不支持所有的这些纸张大小);
常量 数值 意义;
xlPaperLetter 1 Letter (8-1/2 in. x 11 in.)
xlPaperA3 8 A3 (297 mm x 420 mm)
xlPaperA4 9 A4 (210 mm x 297 mm)
xlPaperA4Small 10 A4 Small (210 mm x 297 mm)
xlPaperA5 11 A5 (148 mm x 210 mm)
xlPaperB4 12 B4 (250 mm x 354 mm)
xlPaperB5 13 B5 (182 mm x 257 mm)
xlPaperFanfoldUS 39 U.S. Standard Fanfold (14-7/8 in. x 11 in.)
xlPaperUser 用户自定义
25.打印单元格网线
_ole_excel.ActiveSheet.PageSetup.PrintGridLines = .t.
26.拷贝整个工作表
_ole_excel.ActiveSheet.UsedRange.Copy
27.拷贝指定区域
_ole_excel.ActiveSheet.Range(范围).Copy
28.粘贴
_ole_excel.WorkSheet("工作簿").Range(单元格).PasteSpecial && 单元格如"K9"
29.在第2行之前插入一行
_ole_excel.ActiveSheet.Rows(2).Insert
30.在第2列之前插入一列
_ole_excel.ActiveSheet.Columns(2).Insert
31.设置字体
_ole_excel.ActiveSheet.Cells(行,列).Font.Name = "黑体"
32.设置字体大小(默认单位:点)
_ole_excel.ActiveSheet.Cells(行,列).Font.Size = 16
33.设置字体为斜体
_ole_excel.ActiveSheet.Cells(行,列).Font.Italic = .t.
34.设置整列字体为粗体
_ole_excel.ActiveSheet.Columns(列).Font.Bold = .t.
35.合并单元格,重要!
_ole_excel.Worksheets("工作簿名").Range(范围).merge && 范围必须指定起止的单元格,
如"A1:B4"
36.撤销合并单元格,上述操作的逆操作
_ole_excel.Worksheets("工作簿名").Range(范围).unmerge
37.在单元格中设置公式(重要,一般可以用来实现计算汇总、求平均等很多功能)
_ole_excel.cells(行,列).value = "=公式" && 可以使用所有VBA内部函数,如sum()等。注意:不
能使用VFP的函数啊!
38.清除单元格中的公式
_ole_excel.cells(行,列).ClearContents
39.打印预览工作表,
_ole_excel.ActiveSheet.PrintPreview
40.打印输出工作表
_ole_excel.ActiveSheet.PrintOut
41.工作表另存为
_ole_excel.ActiveWorkBook.SaveAs("新的工作表文件名")
42.放弃存盘
_ole_excel.ActiveWorkBook.Saved = .t. && 注意:一般得执行此句,免得出现保存对话框!很多网
友说excel退出后仍然驻留内存就因未正确处理保存操作!
43.关闭工作簿
_ole_excel.WorkBooks.Close
44.退出Excel
_ole_excel.Quit
现将word下常见的东东搜集整理如下:
1.创建word对象
_ole_word = CreateObject("Word.Basic")
2.打开指定文档
_ole_word.FileOpen("文档名") && 要打开的文档(doc)必须是全路径
--------------------------------------
excel函数:
1、COUNT(value1,value2, ...)返回参数的个数。利用函数 COUNT 可以计算数组或单元格区域中数字项的个
数。
2、COUNTIF(range,criteria)计算给定区域内满足特定条件的单元格的数目。
Range 为需要计算其中满足条件的单元格数目的单元格区域。
Criteria 为确定哪些单元格将被计算在内的条件,其形式可以为数字、表达式或文本。例如,条件可以表
示为 32、"32"、">32"、"apples"。
3、COUNTBLANK(range)计算指定单元格区域中空白单元格的数目。
即使单元格中含有返回值为 ""(空文本)的公式,该单元格也会计算在内,但包含零值的单元格不计算在
内。
4、COUNTA(value1,value2, ...)返回参数组中非空值的数目。利用函数 COUNTA 可以计算数组或单元格区域
中数据项的个数。
value1, value2, ... 所要计数的值,参数个数为 1~30 个。在这种情况下,参数值可以是任何类型,它
们可以包括空字符 (""),但不包括空白单元格。如果参数是数组或单元格引用,则数组或引用中的空白单元
格将被忽略。如果不需要统计逻辑值、文字或错误值,请使用函数 COUNT。
▲生成Excel文件如何设定最适合的列宽?
●eole.Columns("B:B").EntireColumn.AutoFit
sht.range("&sf").Rows.AutoFit
sht.range("&sf").Columns.AutoFit
--------------------------------------------------
COUNT(value1,value2, ...)
倒底如何调用才能知道EXCEL当前 SHEET的总行数与总列数??
愚昧。看不懂。只好烦请你详细说明。
刚试验: 35.合并单元格,重要!
_ole_excel.Worksheets("工作簿名").Range(范围).merge && 范围必须指定起止的单元格,
如"A1:B4"
好象也合并不了! myexcel.worksheetd("e:\zzz\xls99.xls").range("a1:b4").merge
-------------------------------------------------
1、当前行、当前列没意义;
2、水平居中:
_ole_excel.WorkSheets("Sheet1").Range("A1:A5").HorizontalAlignment = xlHAlignCenter
垂直居中:
_ole_excel.WorkSheets("Sheet1").Rows(2).VerticalAlignment = xlVAlignCenter
3、合并的是工作簿而非工作表!你那句是指工作表啊
----------------------------------------------
当前的总行数、总列数:
.ActiveSheet.UsedRange.rows.count
.ActiveSheet.UsedRange.columns.count
---------------------------------------------
▲能够让打开的窗口作为VFP的子窗口吗?
●_ole_excel.visible = .t.
▲请问各位高手,在VFP6.0中生成Execl表格,如何设置“顶端标题行”和“左边标题列”
● With ActiveSheet.PageSetup
.PrintTitleRows = "$ 1:$ 3"
.PrintTitleColumns = ""
End With
● eole.ActiveSheet.PageSetup.PrintTitleRows = "$ 1:$ 1"
eole.ActiveSheet.PageSetup.PrintTitleColumns = "$ A:$ A"
回复Comments
作者:
{commentrecontent}