作者在 2015-05-02 21:28:33 发布以下内容
三、VFP控制EXCEL工作表
工作表是操作 EXCEL 时不可缺少的对象,同时是编辑单元格对象的入口和载体,利用 VFP 更好的控制 EXCEL 工作簿和单元格,掌握控制工作表的方法至关重要。
3.1 插入工作表
在新打开的工作簿中,默认有三个工作表,当工作表的数量不够用时,可以插入工作。
3.1.1 插入指定数量工作表
使用以下代码可以插入新的工作表。
1、插入单个空白工作表,不带参数增加新表至当前工作表之前
oExcel.Sheets.Add
说明:
●使用 Sheets (工作表集合对象)的 Add 方法可以插入空白工作表。
2、插入多个空白工作表,带参数增加两个新表至当前工作表之前
oExcel.Sheets.Add(,,2,-4167)
3.1.2 指定位置插入工作表
如果需要对插入的工作表指定位置,可以使用以下代码。
1、在指定工作表前插入N个工作表
oExcel.Sheets.Add(oExcel.Sheets(I),,N,-4167)
说明:
●在第I个工作表前插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
2、在指定工作表后插入N个工作表
oExcel.Sheets.Add(,oExcel.Sheets(I),N,-4167)
说明:
●在第I个工作后插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
3、在工作表的最后位置插入N个工作表
oExcel.Sheets.Add(,oExcel.Sheets(oExcel.Sheets.Count),N,-4167)
说明:
●在工作表最后位置插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
●oExcel.Sheets.Count:当前工作簿中工作表的数量。Count 是工作表集合对象(Sheets)的属性,表示工作表的总数量。
4、在工作表最前位置插入N个工作表
oExcel.Sheets.Add(oExcel.Sheets(1),,N,-4167)
说明:
●在第 1 个工作表插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
3.1.3 插入工作表的命名
在工作表集合对象(Sheets)的 Add 方法中,没有提供直接命名的变量;如果需要为工作表命名,可以使用以下代码。
1、为插入的单个工作表命名
代码1
cName=oExcel.Sheets.Add(,.Sheets(2),1,-4167)
cName.Name="数学"
●Name:是工作表的属性名,指工作的名称。
代码2
oExcel.Sheets.Add
oExcel.ActiveSheet.Name="数学"
说明:
●ActiveSheet:是指当前活动的工作表。新插入的工作会自动成为活动工作表,所以 ActiveSheet 是指新插入的工作表。
●oExcel.ActiveSheet.Name="数学":当前活动工作表的名称为数学。
2、插入12个工作表,并分别命名为 1-12月
oExcel=CreateObject("Excel.Application")
With oExcel
.WorkBooks.Add
* 插入工作表并且命名
For lnI=1 To 12
.Sheets.Add
.ActiveSheet.Name=Transform(lnI)+"月"
EndFor
.Visible=.T.
EndWith
3.1.4 插入前判断工作表是否存在
有时在插入工作表前需要判断该工作前是否存在,再进行插入工作表的操作。判断的原因是如果该存在工作表,使用插入工作表并命名相同的名称时,会发生错误提示信息。
oExcel=CreateObject("Excel.Application")
With oExcel
.WorkBooks.Add
* 判断工作表名称是否存在
For lnI=1 To .Sheets.Count
If .Sheets(lnI).Name=="数学"
MessageBox("工作表"+.Sheets(lnI).Name+" 已存在")
Exit
EndIf
EndFor
.Sheets.Add
.ActiveSheet.Name="数学"
.Quit
EndWith
Release Quit
3.1.5 获取工作表名称
oExcel=CreateObject("Excel.Application") && 创建Excel对象
With oExcel
.WorkBooks.Add && 添加新工作簿,默认为3个工作表
* 插入工作表并且命名
For lnI=1 To 12
.Sheets.Add
.ActiveSheet.Name=Transform(lnI)+"月"
EndFor
* 获取工作表名称
For lnI=1 To .Sheets.Count
?.Sheets(lnI).Name
EndFor
EndWith
3.2 选取工作表
选取工作表是编辑工作表及单元格的前提。
3.2.1 选取指定工作表和设置活动工作表
1、选取指定工作表
oExcel.Sheets("Sheet1").Select
2、设置活动工作表
oExcel.Sheets("Sheet1").Activate
说明:
●oExcel.Sheets("Sheet1").Select:选取 Sheet1 工作表,Select 是工作表对象集合(Sheets)的方法,使该工作表处于选取状态。
●oExcel.Sheets("Sheet1").Activate:设置工作表 Sheet1 为活动状态,Activate 是工作表对象集合(Sheets)的方法,使该工作表处于活动状态。
●Select 与 Activate 的区别:在操作一张工作表时二者结果相同,都是选取该工作表并使该工作表成活动状态。主要区别是当同时选取多个工作表时,只能设置一个工作表为活动状态。
3.3 工作表在工作簿内移动或复制
3.3.1 移动工作表
1、移动到指定工作表之前(将第一个工作表移动到第三个工作表之前)
oExcel.WorkSheets("Sheet1").Move(oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Move(oExcel.Sheets(3))
2、移动到指定工作表之后(将第一个工作表移动到第三个工作表之后)
oExcel.WorkSheets("Sheet1").Move(,oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Move(,oExcel.Sheets(3))
3.3.2 复制工作表
1、复制到指定工作表之前(将第一个工作表复制到第三个工作表之前)
oExcel.WorkSheets("Sheet1").Copy(oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Copy(oExcel.Sheets(3))
2、复制到指定工作表之后(将第一个工作表复制到第三个工作表之后)
oExcel.WorkSheets("Sheet1").Copy(,oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Copy(,oExcel.Sheets(3))
3.4 删除指定工作表
oExcel.Sheets(1).Delete
工作表是操作 EXCEL 时不可缺少的对象,同时是编辑单元格对象的入口和载体,利用 VFP 更好的控制 EXCEL 工作簿和单元格,掌握控制工作表的方法至关重要。
3.1 插入工作表
在新打开的工作簿中,默认有三个工作表,当工作表的数量不够用时,可以插入工作。
3.1.1 插入指定数量工作表
使用以下代码可以插入新的工作表。
1、插入单个空白工作表,不带参数增加新表至当前工作表之前
oExcel.Sheets.Add
说明:
●使用 Sheets (工作表集合对象)的 Add 方法可以插入空白工作表。
2、插入多个空白工作表,带参数增加两个新表至当前工作表之前
oExcel.Sheets.Add(,,2,-4167)
3.1.2 指定位置插入工作表
如果需要对插入的工作表指定位置,可以使用以下代码。
1、在指定工作表前插入N个工作表
oExcel.Sheets.Add(oExcel.Sheets(I),,N,-4167)
说明:
●在第I个工作表前插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
2、在指定工作表后插入N个工作表
oExcel.Sheets.Add(,oExcel.Sheets(I),N,-4167)
说明:
●在第I个工作后插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
3、在工作表的最后位置插入N个工作表
oExcel.Sheets.Add(,oExcel.Sheets(oExcel.Sheets.Count),N,-4167)
说明:
●在工作表最后位置插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
●oExcel.Sheets.Count:当前工作簿中工作表的数量。Count 是工作表集合对象(Sheets)的属性,表示工作表的总数量。
4、在工作表最前位置插入N个工作表
oExcel.Sheets.Add(oExcel.Sheets(1),,N,-4167)
说明:
●在第 1 个工作表插入N个工作表,EXCEL2003 工作簿中最多只能有 255 个工作表。
3.1.3 插入工作表的命名
在工作表集合对象(Sheets)的 Add 方法中,没有提供直接命名的变量;如果需要为工作表命名,可以使用以下代码。
1、为插入的单个工作表命名
代码1
cName=oExcel.Sheets.Add(,.Sheets(2),1,-4167)
cName.Name="数学"
●Name:是工作表的属性名,指工作的名称。
代码2
oExcel.Sheets.Add
oExcel.ActiveSheet.Name="数学"
说明:
●ActiveSheet:是指当前活动的工作表。新插入的工作会自动成为活动工作表,所以 ActiveSheet 是指新插入的工作表。
●oExcel.ActiveSheet.Name="数学":当前活动工作表的名称为数学。
2、插入12个工作表,并分别命名为 1-12月
oExcel=CreateObject("Excel.Application")
With oExcel
.WorkBooks.Add
* 插入工作表并且命名
For lnI=1 To 12
.Sheets.Add
.ActiveSheet.Name=Transform(lnI)+"月"
EndFor
.Visible=.T.
EndWith
3.1.4 插入前判断工作表是否存在
有时在插入工作表前需要判断该工作前是否存在,再进行插入工作表的操作。判断的原因是如果该存在工作表,使用插入工作表并命名相同的名称时,会发生错误提示信息。
oExcel=CreateObject("Excel.Application")
With oExcel
.WorkBooks.Add
* 判断工作表名称是否存在
For lnI=1 To .Sheets.Count
If .Sheets(lnI).Name=="数学"
MessageBox("工作表"+.Sheets(lnI).Name+" 已存在")
Exit
EndIf
EndFor
.Sheets.Add
.ActiveSheet.Name="数学"
.Quit
EndWith
Release Quit
3.1.5 获取工作表名称
oExcel=CreateObject("Excel.Application") && 创建Excel对象
With oExcel
.WorkBooks.Add && 添加新工作簿,默认为3个工作表
* 插入工作表并且命名
For lnI=1 To 12
.Sheets.Add
.ActiveSheet.Name=Transform(lnI)+"月"
EndFor
* 获取工作表名称
For lnI=1 To .Sheets.Count
?.Sheets(lnI).Name
EndFor
EndWith
3.2 选取工作表
选取工作表是编辑工作表及单元格的前提。
3.2.1 选取指定工作表和设置活动工作表
1、选取指定工作表
oExcel.Sheets("Sheet1").Select
2、设置活动工作表
oExcel.Sheets("Sheet1").Activate
说明:
●oExcel.Sheets("Sheet1").Select:选取 Sheet1 工作表,Select 是工作表对象集合(Sheets)的方法,使该工作表处于选取状态。
●oExcel.Sheets("Sheet1").Activate:设置工作表 Sheet1 为活动状态,Activate 是工作表对象集合(Sheets)的方法,使该工作表处于活动状态。
●Select 与 Activate 的区别:在操作一张工作表时二者结果相同,都是选取该工作表并使该工作表成活动状态。主要区别是当同时选取多个工作表时,只能设置一个工作表为活动状态。
3.3 工作表在工作簿内移动或复制
3.3.1 移动工作表
1、移动到指定工作表之前(将第一个工作表移动到第三个工作表之前)
oExcel.WorkSheets("Sheet1").Move(oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Move(oExcel.Sheets(3))
2、移动到指定工作表之后(将第一个工作表移动到第三个工作表之后)
oExcel.WorkSheets("Sheet1").Move(,oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Move(,oExcel.Sheets(3))
3.3.2 复制工作表
1、复制到指定工作表之前(将第一个工作表复制到第三个工作表之前)
oExcel.WorkSheets("Sheet1").Copy(oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Copy(oExcel.Sheets(3))
2、复制到指定工作表之后(将第一个工作表复制到第三个工作表之后)
oExcel.WorkSheets("Sheet1").Copy(,oExcel.WorkSheets("Sheet3"))
或者
oExcel.Sheets(1).Copy(,oExcel.Sheets(3))
3.4 删除指定工作表
oExcel.Sheets(1).Delete