ExcelApplication对象应用大全[完美Excel]本文以MSDN中的技术文章《DevelopersGuidetotheExcel2007ApplicationObject》为线条,参考了一系列相关技术文章和图书资料,全面整理和总结了Application对象应用知识。Application对象是Excel对象模型中最高层级的对象,代表Excel应用程序自身,也包含组成工作簿的许多部分,包括工作簿、工作表、单元格集合以及它们包含的数据。Application对象包含:应用程序设置和选项,许多选项与“选项”对话框中的选项相同。返回顶级对象的方法,例如ActiveCell、ActiveSheet,等等。本文使用VBA代码示例简要介绍了与Application对象相关的经常使用的对象、方法和属性,其中一些成员能够改变用户与Excel应用程序交互的方式,还能够改变应用程序的外观和式样。熟悉Application对象能够让您扩展和调整Excel的功能,以满足自已的需求。本文主要介绍的内容如下:从Application对象中引用对象Application对象相关的集合AddIns集合Columns集合和Rows集合Dialogs集合Sheets集合Application对象相关的属性ActiveCell属性ActiveChart属性ActiveSheet属性ActiveWindow属性ActiveWorkbook属性RangeSelection属性ScreenUpdating属性Selection属性StatusBar属性ThisWorkbook属性Application对象相关的方法FindFile方法和Dialogs集合GetOpenFilename方法GetSaveAsFilename方法InputBox方法Run方法Application对象相关的事件激活Application事件监视使用Application对象执行其它任务删除工作表而显示提示信息(DisplayAlerts属性)无须提示用户而保存工作表(DisplayAlerts属性)使用SendKeys方法发送信息到记事本安排宏在指定的时间和间隔运行(OnTime方法)Application对象的其它一些属性和方法Caller属性CutCopyMode属性Evaluate方法OnKey方法ThisCell属性WorksheetFunction属性改变光标显示(Cursor属性)获取或改变Excel窗口的状态或大小(WindowState属性)获取系统信息自动隐藏公式栏(DisplayFormulaBar属性)将Excel全屏显示(DisplayFullScreen属性)获取Excel启动文件夹的路径(StartupPath属性)检测Excel的版本(Version属性)打开最近使用过的文档(RecentFiles属性)文件对话框操作(FileDialog属性)改变Excel工作簿的名称(Caption属性)调用Windows的计算器(ActivateMicrosoftApp方法)暂时停止宏运行(Wait方法)重新计算工作簿(Calculate方法)控制函数重新计算(Volatile方法)获取重叠区域(Intersect方法)获取路径分隔符(PathSeparator属性)快速移至指定位置(Goto方法)关闭Excel(Quit方法)从Application对象中引用对象使用Application属性返回Application对象。在引用应用程序之后,要访问Application对象下面的对象,则依次下移对象模型层级。例如,下面的代码设置第一个工作簿的第一个工作表中的第一个单元格的值为20:Application.Workbooks(1).Worksheets(1).Cells(1,1)=20要引用该单元格,上述代码以Application对象开始,移至第一个工作簿,然后到第一个工作表,最后到达单元格。下面的示例代码在另一个应用程序中创建一个Excel工作簿,然后打开该工作簿:Setxl=CreateObject(Excel.Sheet)xl.Application.Workbooks.Opennewbook.xls可以使用许多属性和方法返回最常用的用户界面对象,例如活动工作表(ActiveSheet属性),而无须Application对象限定。例如,下面的代码:Application.ActiveSheet.Name=MonthlySales可以替换为:ActiveSheet.Name=MonthlySales然而,在使用简短的引用时必须小心,必须已经选择了正确的对象。如果已经使用诸如Worksheet对象的Activate方法选择了合适的工作簿和工作表,那么能够使用下面的代码引用第一个单元格:Cells(1,1)=20有一些实例必须使用Application限定引用。例如,OnTime方法、应用程序窗口的Width和Height属性。通常,处理Excel窗口外观的属性或者影响应用程序全部行为的属性需要Application限定,例如DisplayFormulaBar属性用于显示或隐藏公式栏。Calculation方法也需要限定。Application对象相关的集合本节介绍与Application对象相关的一些集合。AddIns集合AddIns集合代表当前在Excel中装载的所有加载项。就像遍历任何其它集合一样,可以列出应用程序中关于加载项的不同类型的信息。下面的示例列出当前在Excel中装载的加载项的路径和名称:SubListAddIns()DimmyAddinAsAddInForEachmyAddinInAddInsMsgBoxmyAddin.FullNameNextEndSubColumns集合和Rows集合这些集合代表当前工作簿中的列和行,可以使用它们分别选择指定的列和行。Application.Columns(4).Select上述语句选择D列,就像在工作表中单击该列的标题一样。Application.Rows(5).Select上述语句选择第5行,就像在工作表中单击该行的行边一样。Dialogs集合Dialogs集合由应用程序中所有的对话框组成。本文后面将详细介绍该集合。Sheets集合Sheets对象返回指定工作簿或活动工作簿中所有工作表的集合。Sheets集合包含Chart对象或Worksheet对象。下面的示例打印活动工作簿中所有工作表:Application.Sheets.PrintOut下面的示例遍历工作簿中所有的工作表,并打印包含有数据的工作表:ForiSheet=1ToApplication.Sheets.CountIfNotIsEmpty(Application.Sheets(iSheet).UsedRange)ThenApplication.Sheets(iSheet).PrintOutcopies:=1EndIfNextiSheetApplication对象相关的属性在Excel2007应用程序中,有大量的属性用来访问不同的对象。这里,只探讨经常使用的属性。ActiveCellActiveChartActiveSheetActiveWindowActiveWorkbookRangeSelectionScreenUpdatingSelectionStatusBarThisWorkbookActiveCell属性Application对象的ActiveCell属性返回Range对象,代表活动工作簿的活动工作表中的活动单元格。如果没有指定对象限定,那么该属性返回活动窗口中的活动单元格。注意区分活动单元格和单元格选区。活动单元格是当前选区里的单个单元格,选区可能包含很多单元格,但仅有一个单元格是活动单元格。下面的示例改变活动单元格的字体格式。注意确保正在处理正确的单元格,Worksheets集合的Activate方法使工作表Sheet1为活动工作表。Worksheets(Sheet1).ActivateWithActiveCell.Font.Bold=True.Italic=TrueEndWithActiveChart属性ActiveChart属性返回Chart对象,代表活动图表,无论该图表是嵌入式图表还是图表工作表。当嵌入式图表被选择或者被激活时,该图表是活动图表。下面的示例使用ActiveChart属性在工作表MonthlySales中添加一个三维柱形图:SubAddChart()Charts.AddWithActiveChart.ChartType=xl3DColumn.SetSourceDataSource:=Sheets(Sheet1).Range(B3:H15).LocationWhere:=xlLocationAsObject,Name:=MonthlySales.HasTitle=True.ChartTitle.Characters.Text=MonthlySalesbyCategoryEndWithEndSubActiveSheet属性ActiveSheet属性返回Worksheet对象,代表当前所选择的工作表(在顶部的工作表)。在一个工作簿中仅仅有一个工作表是活动工作表。下面的示例显示活动工作表的名字:MsgBox活动工作表的名字是&ActiveSheet.Name下面的示例由用户指定复制活动工作表的次数并复制活动工作表,将复制的工作表放置到工作表Sheet1的前面:SubCopyActiveSheet()DimxAsInteger,numtimesAsIntegerx=InputBox(请输入复制活动工作表的次数)Fornumtimes=1Tox'在工作表Sheet1的前面放置工作表副本ActiveWorkbook.ActiveSheet.Copy_Before:=ActiveWorkbook.Sheets(Sheet1)NextEndSubActiveWindow属性ActiveWindow属性返回Window对象,代表活动窗口(在顶部的窗口)。下面的示例显示活动窗口的名称(Caption属性):MsgBox活动窗口的名称是&ActiveWindow.CaptionCaption属性返回活动窗口的名称,允许使用名称而不是索引号来更清楚地访问该窗口。下面的示例选择并打印工作表,然后对第二个工作表重复这一过程:SubPrintWorksheet()Application.ScreenUpdating=FalseSheets(Sales).SelectActiveWindow.SelectedSheets.PrintOutCopies:=1,Collate:=TrueSheets(Expenses).SelectActiveWindow.SelectedSheets.PrintOutCopies:=1,Collate:=TrueEndSub在该示例中,您可能奇怪为什么将ScreenUpdating属性设置为False。当Excel执行一系列操作任务时,屏幕被更新并且被刷新许多次,这导致屏幕闪烁。设置ScreenUpdating属性为False消除这些闪烁。此外,因为计算机处理器无须为刷新屏幕而暂停,这能使大的应用程序运行得更快。ActiveWorkbook属性ActiveWorkbook属性返回Workbook对象,代表活动窗口中的工作簿。下面的示例显示活动工作簿的名称:MsgBox活动工作簿的名称是&ActiveWorkbook.Name下面的示例设置计算模式为手动,然后遍历并计算活动工作簿中的每个工作表:SubCalcBook()DimwksAsWorksheetApplication.Calculate=xlManualForEachwksInActiveWorkbook.Work