您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页Delphi控制Excel的重要属性和方法

Delphi控制Excel的重要属性和方法

来源:叨叨游戏网
Delphi控制Excel2000

类 别:COM & ActiveX (一) 使用动态创建的方法

首先创建 Excel 对象,使用ComObj: var ExcelApp: Variant;

ExcelApp := CreateOleObject( 'Excel.Application' ); 1) 显示当前窗口:

ExcelApp.Visible := True; 2) 更改 Excel 标题栏:

ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 3) 添加新工作簿:

ExcelApp.WorkBooks.Add; 4) 打开已存在的工作簿:

ExcelApp.WorkBooks.Open( 'C:\\Excel\\Demo.xls' ); 5) 设置第2个工作表为活动工作表: ExcelApp.WorkSheets[2].Activate; 或

ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 6) 给单元格赋值:

ExcelApp.Cells[1,4].Value := '第一行第四列'; 7) 设置指定列的宽度(单位:字符个数),以第一列为例: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 9) 在第8行之前插入分页符:

ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1; 10) 在第8列之前删除分页符:

ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 11) 指定边框线宽度:

ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-顶 4-底 5-斜( \\ ) 6-斜( / ) 12) 清除第一行第四列单元格公式:

ExcelApp.ActiveSheet.Cells[1,4].ClearContents;

WrapText := True可能是自动换行 13) 设置第一行字体属性:

ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书'; ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;

ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 14) 进行页面设置: a.页眉:

ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示'; b.页脚:

ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页'; c.页眉到顶端边距2cm:

ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.页脚到底端边距3cm:

ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.顶边距2cm:

ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底边距2cm:

ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左边距2cm:

ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右边距2cm:

ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.页面水平居中:

ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.页面垂直居中:

ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印单元格网线:

ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 15) 拷贝操作: a.拷贝整个工作表:

ExcelApp.ActiveSheet.Used.Range.Copy; b.拷贝指定区域:

ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; c.从A1位置开始粘贴:

ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.从文件尾部开始粘贴:

ExcelApp.ActiveSheet.Range.PasteSpecial; 16) 插入一行或一列:

a. ExcelApp.ActiveSheet.Rows[2].Insert; b. ExcelApp.ActiveSheet.Columns[1].Insert; 17) 删除一行或一列:

a. ExcelApp.ActiveSheet.Rows[2].Delete; b. ExcelApp.ActiveSheet.Columns[1].Delete; 18) 打印预览工作表:

ExcelApp.ActiveSheet.PrintPreview; 19) 打印输出工作表:

ExcelApp.ActiveSheet.PrintOut; 20) 工作表保存:

if not ExcelApp.ActiveWorkBook.Saved then ExcelApp.ActiveSheet.PrintPreview; 21) 工作表另存为:

ExcelApp.SaveAs( 'C:\\Excel\\Demo1.xls' ); 22) 放弃存盘:

ExcelApp.ActiveWorkBook.Saved := True; 23) 关闭工作簿:

ExcelApp.WorkBooks.Close; 24) 退出 Excel: ExcelApp.Quit;

(二) 使用Delphi 控件方法

在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 1) 打开Excel

ExcelApplication1.Connect; 2) 显示当前窗口:

ExcelApplication1.Visible[0]:=True; 3) 更改 Excel 标题栏:

ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; 4) 添加新工作簿:

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 5) 添加新工作表:

var Temp_Worksheet: _WorkSheet; begin

Temp_Worksheet:=ExcelWorkbook1.

WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); End;

6) 打开已存在的工作簿:

ExcelApplication1.Workbooks.Open (c:\\a.xls EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 7) 设置第2个工作表为活动工作表:

ExcelApplication1.WorkSheets[2].Activate; 或

ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 8) 给单元格赋值:

ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 9) 设置指定列的宽度(单位:字符个数),以第一列为例:

ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:

ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 11) 在第8行之前插入分页符:

ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1; 12) 在第8列之前删除分页符:

ExcelApplication1.ActiveSheet.Columns[8].PageBreak := 0; 13) 指定边框线宽度:

ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-顶 4-底 5-斜( \\ ) 6-斜( / ) 14) 清除第一行第四列单元格公式:

ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 15) 设置第一行字体属性:

ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书'; ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;

ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 16) 进行页面设置: a.页眉:

ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示'; b.页脚:

ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页'; c.页眉到顶端边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.页脚到底端边距3cm:

ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.顶边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.页面水平居中:

ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.页面垂直居中:

ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印单元格网线:

ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 17) 拷贝操作: a.拷贝整个工作表:

ExcelApplication1.ActiveSheet.Used.Range.Copy; b.拷贝指定区域:

ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; c.从A1位置开始粘贴:

ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.从文件尾部开始粘贴:

ExcelApplication1.ActiveSheet.Range.PasteSpecial; 18) 插入一行或一列:

a. ExcelApplication1.ActiveSheet.Rows[2].Insert; b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 19) 删除一行或一列:

a. ExcelApplication1.ActiveSheet.Rows[2].Delete; b. ExcelApplication1.ActiveSheet.Columns[1].Delete;

20) 打印预览工作表:

ExcelApplication1.ActiveSheet.PrintPreview; 21) 打印输出工作表:

ExcelApplication1.ActiveSheet.PrintOut; 22) 工作表保存:

if not ExcelApplication1.ActiveWorkBook.Saved then ExcelApplication1.ActiveSheet.PrintPreview; 23) 工作表另存为:

ExcelApplication1.SaveAs( 'C:\\Excel\\Demo1.xls' ); 24) 放弃存盘:

ExcelApplication1.ActiveWorkBook.Saved := True; 25) 关闭工作簿:

ExcelApplication1.WorkBooks.Close; 26) 退出 Excel:

ExcelApplication1.Quit;

ExcelApplication1.Disconnect; 释放

FreeAndNil(Excelbook); //释放资源 FreeAndNil(ExcelSheet); //释放和清零(变量名)

(三) 使用Delphi 控制Excle二维图

在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet var asheet1,achart, range:variant; 1)选择当第一个工作薄第一个工作表

asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 2)增加一个二维图

achart:=asheet1.chartobjects.add(100,100,200,200); 3)选择二维图的形态

achart.chart.charttype:=4; 4)给二维图赋值

series:=achart.chart.seriescollection; range:=sheet1!r2c3:r3c9; series.add(range,true); 5)加上二维图的标题

achart.Chart.HasTitle:=True;

achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’ 6)改变二维图的标题字体大小

achart.Chart.ChartTitle.Font.size:=6; 7)给二维图加下标说明

achart.Chart.Axes(xlCategory, xlPrimary).HasTitle := True;

achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := '下标说明';

8)给二维图加左标说明

achart.Chart.Axes(xlValue, xlPrimary).HasTitle := True;

achart.Chart.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := '左标说明'; 9)给二维图加右标说明

achart.Chart.Axes(xlValue, xlSecondary).HasTitle := True;

achart.Chart.Axes(xlValue, xlSecondary).AxisTitle.Characters.Text := '右标说明'; 10)改变二维图的显示区大小

achart.Chart.PlotArea.Left := 5; achart.Chart.PlotArea.Width := 223; achart.Chart.PlotArea.Height := 108; 11)给二维图坐标轴加上说明

achart.chart.seriescollection[1].NAME:='坐标轴说明';

Delphi 控制Excel

(一) 使用动态创建的方法

首先创建 Excel 对象,使用ComObj: var ExcelApp: Variant;

ExcelApp := CreateOleObject( 'Excel.Application' ); 1) 显示当前窗口:

ExcelApp.Visible := True; 2) 更改 Excel 标题栏:

ExcelApp.Caption := '应用程序调用 Microsoft Excel'; 3) 添加新工作簿:

ExcelApp.WorkBooks.Add; 4) 打开已存在的工作簿:

ExcelApp.WorkBooks.Open( 'C:\\Excel\\Demo.xls' ); 5) 设置第2个工作表为活动工作表:

ExcelApp.WorkSheets[2].Activate; 或 ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 6) 给单元格赋值:

ExcelApp.Cells[1,4].Value := '第一行第四列';

7) 设置指定列的宽度(单位:字符个数),以第一列为例: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;

8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 9) 在第8行之前插入分页符:

ExcelApp.WorkSheets[1].Rows.PageBreak := 1;

10) 在第8列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 11) 指定边框线宽度:

ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-顶 4-底 5-斜( \\ ) 6-斜( / ) 12) 清除第一行第四列单元格公式:

ExcelApp.ActiveSheet.Cells[1,4].ClearContents;

13) 设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1].Font.Name := '隶书'; ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 14) 进行页面设置: a.页眉:

ExcelApp.ActiveSheet.PageSetup.CenterHeader := '报表演示'; b.页脚:

ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P页'; c.页眉到顶端边距2cm:

ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.页脚到底端边距3cm:

ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.顶边距2cm:

ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底边距2cm:

ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左边距2cm:

ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右边距2cm:

ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.页面水平居中:

ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.页面垂直居中:

ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印单元格网线:

ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 15) 拷贝操作:

a.拷贝整个工作表: ExcelApp.ActiveSheet.Used.Range.Copy; b.拷贝指定区域: ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;

c.从A1位置开始粘贴: ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.从文件尾部开始粘贴: ExcelApp.ActiveSheet.Range.PasteSpecial; 16) 插入一行或一列:

a. ExcelApp.ActiveSheet.Rows[2].Insert; b. ExcelApp.ActiveSheet.Columns[1].Insert; 17) 删除一行或一列:

a. ExcelApp.ActiveSheet.Rows[2].Delete; b. ExcelApp.ActiveSheet.Columns[1].Delete; 18) 打印预览工作表:

ExcelApp.ActiveSheet.PrintPreview; 19) 打印输出工作表:

ExcelApp.ActiveSheet.PrintOut; 20) 工作表保存:

if not ExcelApp.ActiveWorkBook.Saved then

ExcelApp.ActiveSheet.PrintPreview; 21) 工作表另存为:

ExcelApp.SaveAs( 'C:\\Excel\\Demo1.xls' ); 22) 放弃存盘:

ExcelApp.ActiveWorkBook.Saved := True; 23) 关闭工作簿:

ExcelApp.WorkBooks.Close; 24) 退出 Excel: ExcelApp.Quit;

(二) 使用Delphi 控件方法

在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 1) 打开Excel

ExcelApplication1.Connect; 2) 显示当前窗口:

ExcelApplication1.Visible[0]:=True; 3) 更改 Excel 标题栏:

ExcelApplication1.Caption := '应用程序调用 Microsoft Excel'; 4) 添加新工作簿:

ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 5) 添加新工作表:

var Temp_Worksheet: _WorkSheet; begin

Temp_Worksheet:=ExcelWorkbook1.

WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);End; 6) 打开已存在的工作簿:

ExcelApplication1.Workbooks.Open (c:\\a.xls EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,

EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 7) 设置第2个工作表为活动工作表:

ExcelApplication1.WorkSheets[2].Activate; 或

ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 8) 给单元格赋值:

ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 9) 设置指定列的宽度(单位:字符个数),以第一列为例:

ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;

10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例: ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 11) 在第8行之前插入分页符:

ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1; 12) 在第8列之前删除分页符:

ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 13) 指定边框线宽度:

ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-顶 4-底 5-斜( \\ ) 6-斜( / ) 14) 清除第一行第四列单元格公式:

ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 15) 设置第一行字体属性:

ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书'; ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;

ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True; //将全部页面caption的字体设为黑体

ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 16) 进行页面设置: a.页眉:

ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示'; b.页脚:

ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页'; c.页眉到顶端边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.页脚到底端边距3cm:

ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.顶边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右边距2cm:

ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.页面水平居中:

ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.页面垂直居中:

ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印单元格网线:

ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 17) 拷贝操作: a.拷贝整个工作表:

ExcelApplication1.ActiveSheet.Used.Range.Copy; b.拷贝指定区域:

ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; c.从A1位置开始粘贴:

ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.从文件尾部开始粘贴:

ExcelApplication1.ActiveSheet.Range.PasteSpecial; 18) 插入一行或一列:

a. ExcelApplication1.ActiveSheet.Rows[2].Insert;

b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 19) 删除一行或一列:

a. ExcelApplication1.ActiveSheet.Rows[2].Delete; b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 20) 打印预览工作表:

ExcelApplication1.ActiveSheet.PrintPreview; 21) 打印输出工作表:

ExcelApplication1.ActiveSheet.PrintOut; 22) 工作表保存:

if not ExcelApplication1.ActiveWorkBook.Saved then ExcelApplication1.ActiveSheet.PrintPreview; 23) 工作表另存为:

ExcelApplication1.SaveAs( 'C:\\Excel\\Demo1.xls' ); 24) 放弃存盘:

ExcelApplication1.ActiveWorkBook.Saved := True; 25) 关闭工作簿:

ExcelApplication1.WorkBooks.Close; 26) 退出 Excel:

ExcelApplication1.Quit;

ExcelApplication1.Disconnect;

ews1:TExcelWorksheet; ...

ews1.PageSetup.Orientation := xlLandscape; //横向打印 ews1.PageSetup.Zoom := false; //不使用缩放比例(即使用调整成x页宽,x页高);

ews1.PageSetup.FitToPagesWide := 2; //调整成2页宽 ews1.PageSetup.FitToPagesTall := 1; //调整成1页高

工作簿(Workbook)基本操作应用示例 2009-05-26 12:42

工作簿(Workbook)基本操作应用示例 示例03-01:创建工作簿(Add方法) [示例03-01-01]

Sub CreateNewWorkbook1()

MsgBox \"将创建一个新工作簿.\" Workbooks.Add End Sub

[示例03-01-02]

Sub CreateNewWorkbook2() Dim wb As Workbook Dim ws As Worksheet Dim i As Long

MsgBox \"将创建一个新工作簿,并预设工作表格式.\" Set wb = Workbooks.Add Set ws = wb.Sheets(1) ws.Name = \"产品汇总表\" ws.Cells(1, 1) = \"序号\" ws.Cells(1, 2) = \"产品名称\" ws.Cells(1, 3) = \"产品数量\" For i = 2 To 10

ws.Cells(i, 1) = i - 1 Next i End Sub

--------------------------------------------------------------------------------

示例03-02:添加并保存新工作簿 Sub AddSaveAsNewWorkbook() Dim Wk As Workbook Set Wk = Workbooks.Add

Application.DisplayAlerts = False

Wk.SaveAs Filename:=\"D:/SalesData.xls\" End Sub

示例说明:本示例使用了Add方法和SaveAs方法,添加一个新工作簿并将该工作簿以文件名SalesData.xls保存在D盘中。其中,语句

Application.DisplayAlerts = False表示禁止弹出警告对话框。

--------------------------------------------------------------------------------

示例03-03:打开工作簿(Open方法) [示例03-03-01]

Sub openWorkbook1()

Workbooks.Open \"<需打开文件的路径>\\<文件名>\" End Sub 示例说明:代码中的<>里的内容需用所需打开的文件的路径及文件名代替。Open方法共有15个参数,其中参数FileName为必需的参数,其余参数可选。 [示例03-03-02]

Sub openWorkbook2()

Dim fname As String

MsgBox \"将D盘中的<测试.xls>工作簿以只读方式打开\" fname = \"D:\\测试.xls\"

Workbooks.Open Filename:=fname, ReadOnly:=True End Sub

--------------------------------------------------------------------------------

示例03-04:将文本文件导入工作簿中(OpenText方法) Sub TextToWorkbook()

'本示例打开某文本文件并将制表符作为分隔符对此文件进行分列处理转换成为工作表

Workbooks.OpenText Filename:=\"<文本文件所在的路径>/<文本文件名>\ DataType:=xlDelimited, Tab:=True End Sub

示例说明:代码中的<>里的内容需用所载入的文本文件所在路径及文件名代替。OpenText方法的作用是导入一个文本文件,并将其作为包含单个工作表的工作簿进行分列处理,然后在此工作表中放入经过分列处理的文本文件数据。该方法共有18个参数,其中参数FileName为必需的参数,其余参数可选。 --------------------------------------------------------------------------------

示例03-05:保存工作簿(Save方法) [示例03-05-01] Sub SaveWorkbook()

MsgBox \"保存当前工作簿.\" ActiveWorkbook.Save End Sub

[示例03-05-02]

Sub SaveAllWorkbook1() Dim wb As Workbook

MsgBox \"保存所有打开的工作簿后退出Excel.\" For Each wb In Application.Workbooks wb.Save Next wb

Application.Quit End Sub

[示例03-05-03]

Sub SaveAllWorkbook2() Dim wb As Workbook

For Each wb In Workbooks

If wb.Path <> \"\" Then wb.Save Next wb End Sub

示例说明:本示例保存原来已存在且已打开的工作簿。

--------------------------------------------------------------------------------

示例03-06:保存工作簿(SaveAs方法) [示例03-06-01]

Sub SaveWorkbook1()

MsgBox \"将工作簿以指定名保存在默认文件夹中.\" ActiveWorkbook.SaveAs \"<工作簿名>.xls\" End Sub

示例说明:SaveAs方法相当于“另存为„„”命令,以指定名称保存工作簿。该方法有12个参数,均为可选参数。如果未指定保存的路径,那么将在默认文件夹中保存该工作簿。如果文件夹中该工作簿名已存在,则提示是否替换原工作簿。

[示例03-06-02]

Sub SaveWorkbook2()

Dim oldName As String, newName As String Dim folderName As String, fname As String oldName = ActiveWorkbook.Name newName = \"new\" & oldName

MsgBox \"将<\" & oldName & \">以<\" & newName & \">的名称保存\" folderName = Application.DefaultFilePath fname = folderName & \"\\\" & newName ActiveWorkbook.SaveAs fname End Sub

示例说明:本示例将当前工作簿以一个新名(即new加原名)保存在默认文件夹中。

[示例03-06-03] Sub CreateBak1()

MsgBox \"保存工作簿并建立备份工作簿\"

ActiveWorkbook.SaveAs CreateBackup:=True End Sub

示例说明:本示例将在当前文件夹中建立工作簿的备份。 [示例03-06-04] Sub CreateBak2() MsgBox \"保存工作簿时,若已建立了备份,则将出现包含True的信息框,否则出现False.\"

MsgBox ActiveWorkbook.CreateBackup End Sub

--------------------------------------------------------------------------------

示例03-07:取得当前打开的工作簿数(Count属性) Sub WorkbookNum()

MsgBox \"当前已打开的工作簿数为:\" & Chr(10) & Workbooks.Count End Sub

--------------------------------------------------------------------------------

[NextPage] 示例03-08:激活工作簿(Activate方法) [示例03-08-01]

Sub ActivateWorkbook1()

Workbooks(\"<工作簿名>\").Activate End Sub

示例说明:Activate方法激活一个工作簿,使该工作簿为当前工作簿。 [示例03-08-02]

Sub ActivateWorkbook2() Dim n As Long, i As Long Dim b As String

MsgBox \"依次激活已经打开的工作簿\" n = Workbooks.Count For i = 1 To n

Workbooks(i).Activate

b = MsgBox(\"第 \" & i & \"个工作簿被激活,还要继续吗?\ If b = vbNo Then Exit Sub

If i = n Then MsgBox \"最后一个工作簿已被激活.\" Next i End Sub

--------------------------------------------------------------------------------

示例03-09:保护工作簿(Protect方法) Sub ProtectWorkbook()

MsgBox \"保护工作簿结构,密码为123\"

ActiveWorkbook.Protect Password:=\"123\MsgBox \"保护工作簿窗口,密码为123\"

ActiveWorkbook.Protect Password:=\"123\MsgBox \"保护工作簿结构和窗口,密码为123\"

ActiveWorkbook.Protect Password:=\"123\Structure:=True, Windows:=True End Sub 示例说明:使用Protect方法来保护工作簿,带有三个可选参数,参数Password指明保护工作簿密码,要解除工作簿保护应输入此密码;参数Structure设置为True则保护工作簿结构,此时不能对工作簿中的工作表进行插入、复制、删除等操作;参数Windows设置为True则保护工作簿窗口,此时该工作簿右上角的最小化、最大化和关闭按钮消失。

--------------------------------------------------------------------------------

示例03-10:解除工作簿保护(UnProtect方法) Sub UnprotectWorkbook() MsgBox \"取消工作簿保护\"

ActiveWorkbook.Unprotect \"123\" End Sub

--------------------------------------------------------------------------------

示例03-11:工作簿的一些通用属性示例 Sub testGeneralWorkbookInfo()

MsgBox \"本工作簿的名称为\" & ActiveWorkbook.Name

MsgBox \"本工作簿带完整路径的名称为\" & ActiveWorkbook.FullName MsgBox \"本工作簿对象的代码名为\" & ActiveWorkbook.CodeName MsgBox \"本工作簿的路径为\" & ActiveWorkbook.Path If ActiveWorkbook.ReadOnly Then

MsgBox \"本工作簿已经是以只读方式打开\" Else

MsgBox \"本工作簿可读写.\" End If

If ActiveWorkbook.Saved Then MsgBox \"本工作簿已保存.\" Else

MsgBox \"本工作簿需要保存.\" End If End Sub

--------------------------------------------------------------------------------

示例03-12:访问工作簿的内置属性(BuiltinDocumentProperties属性) [示例03-12-01]

Sub ShowWorkbookProperties() Dim SaveTime As String On Error Resume Next

SaveTime = ActiveWorkbook.BuiltinDocumentProperties(\"Last Save Time\").Value

If SaveTime = \"\" Then

MsgBox ActiveWorkbook.Name & \"工作簿未保存.\" Else

MsgBox \"本工作簿已于\" & SaveTime & \"保存\End If End Sub 示例说明:在Excel中选择菜单“文件——属性”命令时将会显示一个“属性”对话框,该对话框中包含了当前工作簿的有关信息,可以在VBA中使用

BuiltinDocumentProperties属性访问工作簿的属性。上述示例代码将显示当前

工作簿保存时的日期和时间。 [示例03-12-02]

Sub listWorkbookProperties() On Error Resume Next

'在名为\"工作簿属性\"的工作表中添加信息,若该工作表不存在,则新建一个工作表

Worksheets(\"工作簿属性\").Activate If Err.Number <> 0 Then

Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = \"工作簿属性\" Else

ActiveSheet.Clear End If

On Error GoTo 0 ListProperties End Sub

‘- - - - - - - - - - - - - - - - - - - - - - - Sub ListProperties() Dim i As Long

Cells(1, 1) = \"名称\" Cells(1, 2) = \"类型\" Cells(1, 3) = \"值\"

Range(\"A1:C1\").Font.Bold = True With ActiveWorkbook

For i = 1 To .BuiltinDocumentProperties.Count With .BuiltinDocumentProperties(i) Cells(i + 1, 1) = .Name Select Case .Type

Case msoPropertyTypeBoolean Cells(i + 1, 2) = \"Boolean\" Case msoPropertyTypeDate Cells(i + 1, 2) = \"Date\" Case msoPropertyTypeFloat Cells(i + 1, 2) = \"Float\" Case msoPropertyTypeNumber Cells(i + 1, 2) = \"Number\" Case msoPropertyTypeString Cells(i + 1, 2) = \"string\" End Select

On Error Resume Next

Cells(i + 1, 3) = .Value On Error GoTo 0 End With Next i

End With

Range(\"A:C\").Columns.AutoFit End Sub 示例说明:本示例代码在“工作簿属性”工作表中列出了当前工作簿中的所有内置属性。

--------------------------------------------------------------------------------

示例03-13:测试工作簿中是否包含指定工作表(Sheets属性) Sub testSheetExists()

MsgBox \"测试工作簿中是否存在指定名称的工作表\" Dim b As Boolean

b = SheetExists(\"<指定的工作表名>\") If b = True Then

MsgBox \"该工作表存在于工作簿中.\" Else

MsgBox \"工作簿中没有这个工作表.\" End If End Sub

‘- - - - - - - - - - - - - - - - - - - - - - - Private Function SheetExists(sname) As Boolean Dim x As Object

On Error Resume Next

Set x = ActiveWorkbook.Sheets(sname) If Err = 0 Then

SheetExists = True Else

SheetExists = False End If

End Function

--------------------------------------------------------------------------------

示例03-14:对未打开的工作簿进行重命名(Name方法) Sub rename()

Name \"<工作簿路径>\\<旧名称>.xls\" As \"<工作簿路径>\\<新名称>.xls\" End Sub 示例说明:代码中<>中的内容为需要重命名的工作簿所在路径及新旧名称。该方法只是对未打开的文件进行重命名,如果该文件已经打开,使用该方法会提示错误。

--------------------------------------------------------------------------------

[NextPage] 示例03-15:设置数字精度(PrecisionAsDisplayed属性)

Sub SetPrecision() Dim pValue

MsgBox \"在当前单元格中输入1/3,并将结果算至小数点后两位\" ActiveCell.Value = 1 / 3

ActiveCell.NumberFormatLocal = \"0.00\" pValue = ActiveCell.Value * 3

MsgBox \"当前单元格中的数字乘以3等于:\" & pValue

MsgBox \"然后,将数值分类设置为[数值],即单元格中显示的精度\" ActiveWorkbook.PrecisionAsDisplayed = True pValue = ActiveCell.Value * 3

MsgBox \"此时,当前单元格中的数字乘以3等于:\" & pValue & \"而不是1\" ActiveWorkbook.PrecisionAsDisplayed = False End Sub

示例说明:PrecisionAsDisplayed属性的值设置为True,则表明采用单元格中所显示的数值进行计算。

--------------------------------------------------------------------------------

示例03-16:删除自定义数字格式(DeleteNumberFormat方法) Sub DeleteNumberFormat()

MsgBox \"从当前工作簿中删除000-00-0000的数字格式\" ActiveWorkbook.DeleteNumberFormat (\"000-00-0000\") End Sub

示例说明:DeleteNumberFormat方法将从指定的工作簿中删除自定义的数字格式。

--------------------------------------------------------------------------------

示例03-17:控制工作簿中图形显示(DisplatyDrawingObjects属性) Sub testDraw()

MsgBox \"隐藏当前工作簿中的所有图形\"

ActiveWorkbook.DisplayDrawingObjects = xlHide MsgBox \"仅显示当前工作簿中所有图形的占位符\"

ActiveWorkbook.DisplayDrawingObjects = xlPlaceholders MsgBox \"显示当前工作簿中的所有图形\"

ActiveWorkbook.DisplayDrawingObjects = xlDisplayShapes End Sub

示例说明:本属性作用的对象包括图表和形状。在应用本示例前,应保证工作簿中有图表或形状,以察看效果。

--------------------------------------------------------------------------------

示例03-18:指定名称(Names属性) Sub testNames()

MsgBox \"将当前工作簿中工作表Sheet1内单元格A1命名为myName.\"

ActiveWorkbook.Names.Add Name:=\"myName\End Sub

示例说明:对于Workbook对象而言,Names属性返回的集合代表工作簿中的所有名称。

--------------------------------------------------------------------------------

示例03-19:检查工作簿的自动恢复功能(EnableAutoRecover属性) Sub UseAutoRecover()

'检查是否工作簿自动恢复功能开启,如果没有则开启该功能 If ActiveWorkbook.EnableAutoRecover = False Then ActiveWorkbook.EnableAutoRecover = True MsgBox \"刚开启自动恢复功能.\" Else

MsgBox \"自动恢复功能已开启.\" End If End Sub

--------------------------------------------------------------------------------

示例03-20:设置工作簿密码(Password属性) Sub UsePassword() Dim wb As Workbook

Set wb = Application.ActiveWorkbook wb.Password = InputBox(\"请输入密码:\") wb.Close End Sub

示例说明:Password属性返回或设置工作簿密码,在打开工作簿时必须输入密码。本示例代码运行后,提示设置密码,然后关闭工作簿;再次打开工作簿时,要求输入密码。

--------------------------------------------------------------------------------

示例03-21:返回工作簿用户状态信息(UserStatus属性) Sub UsePassword() Dim Users As Variant Dim Row As Long

Users = ActiveWorkbook.UserStatus Row = 1

With Workbooks.Add.Sheets(1) .Cells(Row, 1) = \"用户名\"

.Cells(Row, 2) = \"日期和时间\" .Cells(Row, 3) = \"使用方式\"

For Row = 1 To UBound(Users, 1)

.Cells(Row + 1, 1) = Users(Row, 1) .Cells(Row + 1, 2) = Users(Row, 2) Select Case Users(Row, 3) Case 1

.Cells(Row + 1, 3).Value = \"个人工作簿\" Case 2

.Cells(Row + 1, 3).Value = \"共享工作簿\" End Select Next End With

Range(\"A:C\").Columns.AutoFit End Sub 示例说明:示例代码运行后,将创建一个新工作簿并带有用户使用当前工作簿的信息,即用户名、打开的日期和时间及工作簿使用方式。

--------------------------------------------------------------------------------

[NextPage] 示例03-22:检查工作簿是否有密码保护(HasPassword属性) Sub IsPassword()

If ActiveWorkbook.HasPassword = True Then

MsgBox \"本工作簿有密码保护,请在管理员处获取密码.\" Else

MsgBox \"本工作簿无密码保护,您可以自由编辑.\" End If End Sub

--------------------------------------------------------------------------------

示例03-23:决定列表边框是否可见(InactiveListBorderVisible属性) Sub HideListBorders()

MsgBox \"隐藏当前工作簿中所有非活动列表的边框.\" ActiveWorkbook.InactiveListBorderVisible = False End Sub

--------------------------------------------------------------------------------

示例03-24:关闭工作簿 [示例03-24-01]

Sub CloseWorkbook1()

Msgbox “不保存所作的改变而关闭本工作簿” ActiveWorkbook.Close False

‘或ActiveWorkbook.Close SaveChanges:=False ‘或ActiveWorkbook.Saved=True

End sub

[示例03-24-02]

Sub CloseWorkbook2()

Msgbox “保存所作的改变并关闭本工作簿” ActiveWorkbook.Close True End sub

[示例03-24-03]

Sub CloseWorkbook3()

Msgbox “关闭本工作簿。如果工作簿已发生变化,则弹出是否保存更改的对话框。”

ActiveWorkbook.Close True End sub

[示例03-24-04] 关闭并保存所有工作簿 Sub CloseAllWorkbooks() Dim Book As Workbook

For Each Book In Workbooks

If Book.Name<>ThisWorkbook.Name Then Book.Close savechanges:=True End If Next Book

ThisWorkbook.Close savechanges:=True End Sub

[示例03-24-05] 关闭工作簿并将它彻底删除 Sub KillMe()

With ThisWorkbook .Saved = True

.ChangeFileAccess Mode:=xlReadOnly Kill .FullName .Close False End With End Sub

[示例03-24-06]关闭所有工作簿,若工作簿已改变则弹出是否保存变化的对话框

Sub closeAllWorkbook()

MsgBox \"关闭当前所打开的所有工作簿\" Workbooks.Close End Sub

<其它一些有关操作工作簿的示例> 示例03-25:创建新的工作簿 Sub testNewWorkbook()

MsgBox \"创建一个带有10个工作表的新工作簿\" Dim wb as Workbook

Set wb = NewWorkbook(10) End Sub

‘- - - - - - - - - - - - - - - - - - - - - - - Function NewWorkbook(wsCount As Integer) As Workbook

'创建带有由变量wsCount提定数量工作表的工作簿,工作表数在1至255之间 Dim OriginalWorksheetCount As Long Set NewWorkbook = Nothing

If wsCount < 1 Or wsCount > 255 Then Exit Function

OriginalWorksheetCount = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = wsCount Set NewWorkbook = Workbooks.Add

Application.SheetsInNewWorkbook = OriginalWorksheetCount End Function

示例说明:自定义函数NewWorkbook可以创建最多带有255个工作表的工作簿。本测试示例创建一个带有10个工作表的新工作簿。

--------------------------------------------------------------------------------

示例03-26:判断工作簿是否存在 Sub testFileExists()

MsgBox \"如果文件不存在则用信息框说明,否则打开该文件.\" If Not FileExists(\"C:\\文件夹\\子文件夹\\文件.xls\") Then MsgBox \"这个工作簿不存在!\" Else

Workbooks.Open \"C:\\文件夹\\子文件夹\\文件.xls\" End If End Sub

‘- - - - - - - - - - - - - - - - - - - - - - -

Function FileExists(FullFileName As String) As Boolean '如果工作簿存在,则返回True

FileExists = Len(Dir(FullFileName)) > 0 End Function

示例说明:本示例使用自定义函数FileExists判断工作簿是否存在,若该工作簿已存在,则打开它。代码中,“C:\\文件夹\\子文件夹\\文件.xls”代表工作簿所在的文件夹名、子文件夹名和工作簿文件名。

--------------------------------------------------------------------------------

示例03-27:判断工作簿是否已打开 [示例03-27-01]

Sub testWorkbookOpen()

MsgBox \"如果工作簿未打开,则打开该工作簿.\" If Not WorkbookOpen(\"工作簿名.xls\") Then Workbooks.Open \"工作簿名.xls\" End If End Sub

‘- - - - - - - - - - - - - - - - - - - - - - -

Function WorkbookOpen(WorkBookName As String) As Boolean '如果该工作簿已打开则返回真 WorkbookOpen = False

On Error GoTo WorkBookNotOpen

If Len(Application.Workbooks(WorkBookName).Name) > 0 Then WorkbookOpen = True MsgBox \"该工作簿已打开\" Exit Function End If

WorkBookNotOpen: End Function

示例说明:本示例中的函数WorkbookOpen用来判断工作簿是否打开。代码中,“工作簿名.xls”代表所要打开的工作簿名称。 [示例03-27-02]

Sub testWookbookIFOpen() Dim wb As String Dim bwb As Boolean

wb = \"<要判断的工作簿名称>\" bwb = WorkbookIsOpen(wb) If bwb = True Then

MsgBox \"工作簿\" & wb & \"已打开.\" Else

MsgBox \"工作簿\" & wb & \"未打开.\" End If End Sub

‘- - - - - - - - - - - - - - - - - - - - - - - Private Function WorkbookIsOpen(wbname) As Boolean Dim x As Workbook On Error Resume Next

Set x = Workbooks(wbname) If Err = 0 Then

WorkbookIsOpen = True Else

WorkbookIsOpen = False End If

End Function

--------------------------------------------------------------------------------

示例03-28:备份工作簿

[示例03-28-01] 用与活动工作簿相同的名字但后缀名为.bak备份工作簿 Sub SaveWorkbookBackup() Dim awb As Workbook, BackupFileName As String, i As Integer, OK As Boolean

If TypeName(ActiveWorkbook) = \"Nothing\" Then Exit Sub Set awb = ActiveWorkbook If awb.Path = \"\" Then

Application.Dialogs(xlDialogSaveAs).Show Else

BackupFileName = awb.FullName i = 0

While InStr(i + 1, BackupFileName, \".\") > 0 i = InStr(i + 1, BackupFileName, \".\") Wend

If i > 0 Then BackupFileName = Left(BackupFileName, i - 1) BackupFileName = BackupFileName & \".bak\" OK = False

On Error GoTo NotAbleToSave With awb

Application.StatusBar = \"正在保存工作簿...\" .Save

Application.StatusBar = \"正在备份工作簿...\" .SaveCopyAs BackupFileName OK = True End With End If

NotAbleToSave: Set awb = Nothing

Application.StatusBar = False If Not OK Then

MsgBox \"备份工作簿未保存!\End If End Sub 示例说明:在当前工作簿中运行本示例代码后,将以与工作簿相同的名称但后缀名为.bak备份工作簿,且该备份与当前工作簿在同一文件夹中。其中,使用了工作簿的FullName属性和SaveCopyAs方法。

[示例03-28-02] 保存当前工作簿的副本到其它位置备份工作簿 Sub SaveWorkbookBackupToFloppyD() Dim awb As Workbook, BackupFileName As String, i As Integer, OK As Boolean If TypeName(ActiveWorkbook) = \"Nothing\" Then Exit Sub Set awb = ActiveWorkbook If awb.Path = \"\" Then

Application.Dialogs(xlDialogSaveAs).Show Else

BackupFileName = awb.Name OK = False

On Error GoTo NotAbleToSave

If Dir(\"D:\\\" & BackupFileName) <> \"\" Then

Kill \"D:\\\" & BackupFileName End If With awb

Application.StatusBar = \"正在保存工作簿...\" .Save

Application.StatusBar = \"正在备份工作簿...\" .SaveCopyAs \"D:\\\" & BackupFileName OK = True End With End If

NotAbleToSave: Set awb = Nothing

Application.StatusBar = False If Not OK Then

MsgBox \"备份工作簿未保存!\End If End Sub 示例说明:本程序将把当前工作簿进行复制并以与当前工作簿相同的名称保存在D盘中。其中,使用了Kill方法来删除已存在的工作簿。

--------------------------------------------------------------------------------

示例03-29:从已关闭的工作簿中取值 [示例03-29-01]

Sub testGetValuesFromClosedWorkbook()

GetValuesFromAClosedWorkbook \"C:\End Sub

‘- - - - - - - - - - - - - - - - - - - - - - - Sub GetValuesFromAClosedWorkbook(fPath As String, _

fName As String, sName, cellRange As String) With ActiveSheet.Range(cellRange)

.FormulaArray = \"='\" & fPath & \"\\[\" & fName & \"]\" _ & sName & \"'!\" & cellRange .Value = .Value End With End Sub

示例说明:本示例包含一个子过程GetValuesFromAClosedWorkbook,用来从已关闭的工作簿中获取数据,主过程testGetValuesFromClosedWorkbook用来传递参数。本示例表示从C盘根目录下的Book1.xls工作簿的工作表Sheet1中的A1:G20单元格区域内获取数据,并将其复制到当前工作表相应单元格区域中。 [示例03-29-02]

Sub ReadDataFromAllWorkbooksInFolder()

Dim FolderName As String, wbName As String, r As Long, cValue As Variant Dim wbList() As String, wbCount As Integer, i As Integer

FolderName = \"C:\\文件夹名\" '创建文件夹中工作簿列表 wbCount = 0

wbName = Dir(FolderName & \"\\\" & \"*.xls\") While wbName <> \"\"

wbCount = wbCount + 1

ReDim Preserve wbList(1 To wbCount) wbList(wbCount) = wbName wbName = Dir Wend

If wbCount = 0 Then Exit Sub '从每个工作簿中获取数据 r = 0

Workbooks.Add

For i = 1 To wbCount r = r + 1

cValue = GetInfoFromClosedFile(FolderName, wbList(i), \"Sheet1\\"A1\")

Cells(r, 1).Formula = wbList(i) Cells(r, 2).Formula = cValue Next i End Sub

‘- - - - - - - - - - - - - - - - - - - - - - -

Private Function GetInfoFromClosedFile(ByVal wbPath As String, _

wbName As String, wsName As String, cellRef As String) As Variant Dim arg As String

GetInfoFromClosedFile = \"\"

If Right(wbPath, 1) <> \"\\\" Then wbPath = wbPath & \"\\\" If Dir(wbPath & \"\\\" & wbName) = \"\" Then Exit Function arg = \"'\" & wbPath & \"[\" & wbName & \"]\" & _

wsName & \"'!\" & Range(cellRef).Address(True, True, xlR1C1) On Error Resume Next

GetInfoFromClosedFile = ExecuteExcel4Macro(arg) End Function

示例说明:本示例将读取一个文件夹内所有工作簿中工作表Sheet1上单元格A1中的值到一个新工作簿中。代码中,“C:\\文件夹名”代表工作簿所在的文件夹名。

[示例03-29-03]

Sub GetDataFromClosedWorkbook() Dim wb As Workbook

Application.ScreenUpdating = False '以只读方式打开工作簿

Set wb = Workbooks.Open(\"C:\\文件夹名\\文件.xls\With ThisWorkbook.Worksheets(\"工作表名\")

'从工作簿中读取数据

.Range(\"A10\").Formula = wb.Worksheets(\"源工作表名\").Range(\"A10\").Formula

.Range(\"A11\").Formula = wb.Worksheets(\"源工作表名\").Range(\"A20\").Formula

.Range(\"A12\").Formula = wb.Worksheets(\"源工作表名\").Range(\"A30\").Formula

.Range(\"A13\").Formula = wb.Worksheets(\"源工作表名\").Range(\"A40\").Formula End With

wb.Close False '关闭打开的源数据工作簿且不保存任何变化 Set wb = Nothing '释放内存

Application.ScreenUpdating = True End Sub

示例说明:在运行程序时,打开所要获取数据的工作簿,当取得数据后再关闭该工作簿。将屏幕更新属性值设置为False,将看不出源数据工作簿是否被打开过。本程序代码中,“C:\\文件夹名\\文件.xls”、\"源工作表名\"代表工作簿所在的文件夹和工作簿文件名。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务