收藏 分享(赏)

Excel应用、工作簿、工作表、区域等基础对象开发指南.doc

上传人:dzzj200808 文档编号:2280104 上传时间:2018-09-09 格式:DOC 页数:39 大小:204.50KB
下载 相关 举报
Excel应用、工作簿、工作表、区域等基础对象开发指南.doc_第1页
第1页 / 共39页
Excel应用、工作簿、工作表、区域等基础对象开发指南.doc_第2页
第2页 / 共39页
Excel应用、工作簿、工作表、区域等基础对象开发指南.doc_第3页
第3页 / 共39页
Excel应用、工作簿、工作表、区域等基础对象开发指南.doc_第4页
第4页 / 共39页
Excel应用、工作簿、工作表、区域等基础对象开发指南.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、 本文由 jytang091218 贡献doc 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。Excel Application 对象 开发指南 2009-12-26 13:10:21 概 述 Application 对象是 Microsoft Office Excel 2007 对象模型中最高级别的对象,表示 Excel 程序自身。 Application 对象提供正在运行的程序的信息、应用于程序实例的选项以及实例中打开 的当前对象。因为它是对象模型中最高的对象,Application 对象也包含组成一个工作簿的 很多部件,包括如工作簿、工作表集合、单元

2、格以及这些对象所包含的数据等。 Application 对象包括: 程序范围的设置和选项。这些选项大部分同“工具”菜单下的“选项”对话框里的内容 相同。 顶级对象返回的方法,如 ActiveCell、ActiveSheet 等。在下面几节里,你将通过使用 VBA 代码示例学习到一些 Application 对象中经常使用到 的对象、 方法和属性。 关于 Application 对象模型所有成员的详细资料, 请参考 Application 对象成员。Application 对象中其它对象的引用方法 你可以使用 Application 属性返回 Application 对象。获取一个 Applic

3、ation 对象后, 如需访问它下面的对象,可以在对象模型层级中往下移动。 下面示例设置一个工作表的第一个单元格内容为 20。 Application.Workbooks(1).Worksheets(1).Cells(1,1)=20 要表示一个单元格,上面的代码示例从 Application 对象开始,移到第一个工作簿,再 移到第一个工作表,最后到这个单元格。 下面示例在另一个 Excel 程序中创建一个 Excel 工作簿对象,然后打开一个工作簿。 Set xl=CreateObject(“Excel.Sheet“) xl.Application.Workbooks.Open “newboo

4、k.xls“ 不需要使用“Application”限定词,很多的属性和方法也可以直接被用来返回那些最常 用的用户界面对象,如活动工作表 (ActiveSheet 属性)。 例如,除了使用 Application.ActiveSheet.Name = “Monthly Sales” ,你也可以使用 ActiveSheet.Name = “Monthly Sales” 。 然而,当使用这个简便表示方法时必需小心,需要选择正确的对象。例如通过使用 Worksheet 对象的 Activate 方确定你选择了正确的工作簿和工作表后,你可以使用 Cell(1,1) 表示第一个单元格。 有几种情况你必需使

5、用 Application 限定词。例如,OnTime 对象(本文后面部分将讨论) 需要这个限定词,还有程序窗口的 Width 和 Height 属性。 一般来说,用来处理 Excel 窗口的外观或影响程序全局行为的属性或方法需要使用 Application 限定词;例如, DisplayFormlaBar 属性用来显示或隐藏公式栏,Calculation 方法也需要限定词。Application 对象集合 这一节详细介绍一些和 Application 对象相关的集合。 (1) AddIns 集合 AddIns 集合表示所有当前加载的 Excel Add-in。 你可以像枚举其它对象一样在你的

6、程序 中列举出关于 add-in 的不同类型信息。下面的示例列举出当前加载到 Excel 中的 Add-in 的 路径和名称。 Sub ListAddIns() Dim myAddin As AddIn For Each myAddin In AddIns MsgBox myAddin.FullName Next End Sub (2) Columns 和 Rows 集合 这两个集合表示活动工作簿中的列和行。分别使用它们选择指定的列和行。 Application.Columns(4).Select 这个语句选择 D 列,就像你通过点击用户界面中的列的顶部一样。 Application.Rows

7、(5).Select 这个语句选择工作表中的第 5 行,就像你点击行的左边框一样。 (3) Dialogs 集合 Dialogs 集合包括 Excel 程序中所有的对话框。将在本文中后面部分更详细地讨论 Dialogs 集合。 (4) Sheets 集合 Sheets 集合返回指定或活动工作簿中所有工作表的集合。Sheets 集合可以包含 Chart 或 Worksheet 对象。 下面示例打印出活动工作簿中所有的工作表。 Application.Sheets.PrintOut 这个示例循环工作簿中所有的工作表并打印出包含数据区域的任何工作表。 For iSheet = 1 To Applic

8、ation.Sheets.Count If Not IsEmpty(Application.Sheets(iSheet).UsedRange) Then Application.Sheets(iSheet).PrintOut copies:=1 End If Next iSheetApplication 对象的属性 有很多的属性可以用来访问 Excel 2007 程序的各种对象, 多得不能记住或在这里全部讨 论。幸运的是只有一部分是你可能经常使用的。ActiveCell ActiveChart ActiveSheet ActiveWindow ActiveWorkbook RangeSelec

9、tion Selection StatusBar ThisWorkbook 下面的内容演示这些常用属性的使用方法。 (1) ActiveCell 属性 Application 对象的 ActiveCell 属性返回一个表示活动工作簿中活动工作表的活动单元 格的 Range 对象。如果你没有指定对象限定词,这个属性返回活动窗口的活动单元格。 注意区别活动单元格和选择的单元格。活动单元格是当前选择中的一个单元格。 选择(Selection)可能包括一个单元格集合,但只有其中一个是活动单元格。 下面示例改变活动单元格的字体格式。注意为确保你操作正确的单元格,工作表集合的 Activate 方法让 S

10、heet1 成为活动工作表。 Worksheets(“Sheet1“).Activate With ActiveCell.Font .Bold = True .Italic = True End With (2) ActiveChart 属性 ActiveChart 属性返回表示活动图表的 Chart 对象,不管它是嵌入的图表还是图表工作 表。在一个嵌入的图表被选择或激活时,它就是活动图表。下面的示例使用 ActiveChart 属 性添加一个 3 维柱形图到月销售记录工作表中。 Sub AddChart() Charts.Add With ActiveChart .ChartType = x

11、l3DColumn .SetSourceData Source:=Sheets(“Sheet1“).Range(“B3:H15“) .Location Where:=xlLocationAsObject, Name:=“Monthly Sales“ .HasTitle = True .ChartTitle.Characters.Text = Monthly Sales by Category End With End Sub (3) ActiveSheet 属性 ActiveSheet 属性返回一个表示当前选中的工作表(顶部工作表)的 Worksheet 对象。 在一个工作簿中只有一个工作表能

12、成为活动工作表。下面的示例显示活动工作表的名称。 MsgBox “The name of the active sheet is “ ; ActiveSheet.Name 下面的示例将活动工作表复制用户指定的次数并放置在 Sheet1 之前。Sub CopyActiveSheet() Dim x As Integer x = InputBox(“Enter number of times to copy active sheet“) For numtimes = 1 To x Put copies in front of Sheet1. ActiveWorkbook.ActiveSheet.C

13、opy _ Before:=ActiveWorkbook.Sheets(“Sheet1“) Next End Sub (4) ActiveWindow 属性 ActiveWindow 属性返回一个表示活动窗口(顶部窗口)的 Window 对象。下面的示例显 示活动窗口的名称(Caption 属性) 。 MsgBox “The name of the active window is “ ; ActiveWindow.Caption Caption 属性作为活动窗口的名称允许你通过使用友好的名称而不是序号来获得窗口。 下面的示例选择并打印一个工作表,然后对第二个工作表重复此过程。 Sub Pri

14、ntWorksheet() Application.ScreenUpdating = False Sheets(“Sales“).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets(“Expenses“).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub 在这个例子中,你可能疑惑为什么设置 ScreenUpdating 属性为 False。当 Excel 执行一 系列任务时,屏幕被更新并刷新很

15、多次,这将导致屏幕闪烁。设置 ScreenUpdating 属性为 False 可以消除闪烁。另外,因为电脑处理器不需要暂停来刷新屏幕,这样也可以让大型程 序运行得较快一点。 (5) ActiveWorkbook 属性 ActiveWorkbook 属性返回一个表示活动窗口(顶部窗口)中的工作簿的 Workbook 对象。 这个示例显示活动工作簿的名称。 MsgBox “The name of the active workbook is “ ; ActiveWorkbook.Name 下面示例设置计算模式为手动 (这样其它工作簿将不计算) 然后循环并计算活动工作簿 , 的每个工作表。 Sub

16、 CalcBook() Dim wks As Worksheet Application.Calculation = xlManual For Each wks In ActiveWorkbook.Worksheets wks.Calculate Next Set wks = Nothing End Sub (6) RangeSelection 属性RangeSelection 属性返回一个表示指定窗口中工作表里选择的单元格的 Range 对象, 即 使在工作表中一个图表对象已经被选择或激活。这个示例显示活动窗口中工作表所选择单元 格的地址。 MsgBox Application.Active

17、Window.RangeSelection.Address 当你选择了一个范围,RangeSelection 属性和 Selection 对象表示同样一个范围。当你 选择一个图表,RangeSelection 属性返回之前选择的范围。Selection 属性将在下一节中详 细介绍。这里介绍的语法 RangeSelection.Name.Name 在 Office2003 和 2007 中使用时都出现错 误, 如果该代码生效, 必须先设置单元格 A1 的名称。 并且应该不是单元格内容的前三个字符, 而是名称的前三个字符。这应该是原文的疏漏。 下面的示例显示一个单元格中的前三个字符。 Range(

18、“A1“).Select MsgBox Left(ActiveWindow.RangeSelection.Name.Name, 3) 你可能奇怪为什么使用这样的语法 ActiveWindow.RangeSelection.Name.Name 当你选择一个范围,使用 RangeSelection.Name 方法可以获取像 Sheet1!$A$1:$B$15 这 样的范围地址。另外,使用 RangeSelection.Name.Name 方法可以获取命名像 MyRange1 这样 的范围本身的名称。 (7) Selection 属性 Selection 属性返回活动窗口中被选择的对象。例如,对于单

19、元格,这个属性返回 Range 对象;对于图表,它返回 Chart 对象。 如果使用属性而没有对象限定符,等于使用 Application.Selection。 这个示例清除 Sheet1 所选的内容。 Worksheets(“Sheet1“).Activate Selection.Clear 下面的例子将所选范围的总行数保存到变量 NumRows。 NumRows = 0 For Each area In Selection.Areas NumRows = NumRows + area.Rows.Count Next area 这个例子统计所选单元格的总数并在消息框中显示结果。 Sub Co

20、unt_Selection() Dim cell As Object Dim count As Integer count = 0 For Each cell In Selection count = count + 1 Next cell MsgBox count FileNum FileNum = FileNum + 1 Next 然后当过程结束,你需要使用下面的语句将状态栏设置回正常状态。 Application.StatusBar = False 你可以创建你自己的过程使用 StatusBar 属性显示一个宏或其它过程的进度。 Sub ShowStatusBarProgress() D

21、im i As Long Dim pctDone As Double Dim numSquares As Long Const MAXSQR As Long = 15 For i = 1 To 30 pctDone = i / 30 numSquares = pctDone * MAXSQR Application.StatusBar = Application.Rept(Chr(31), numSquares) Application.Wait Now + TimeSerial(0, 0, 1) Next i Application.StatusBar = False End Sub 这个例

22、子在状态栏上显示最大 15 个方块 (由常数 MAXSQR 定义)这个方块通过使用 ASCII 。 字符 31 来产生。这个缺少关于宏需要多长时间的视觉指示,它仅表明宏正在进行。Wait 方 法模拟一个宏需要长时间来执行。 (9) ThisWorkbook 属性 ThisWorkbook 属性返回一个表示当前运行的宏代码所在工作簿的 Workbook 对象。 这个属性允许载入宏定义包含代码的工作簿。 这种情况下 ActiveWorkbook 属性并不起作 用,因为活动工作簿可能并不是包含载入宏代码的工作簿。换句话说,ActiveWorkbook 属性 不返回载入宏工作簿;它返回调用载入宏的工作

23、簿。如果你使用你的 Visual Basic 代码创建 载入宏,你应该使用 ThisWorkbook 属性来限定任何必须运行在包含载入宏的工作簿上的语 句。 下面示例关闭包含示例代码的工作簿。如果对工作簿的修改不被保存。 ThisWorkbook.Close SaveChanges:=False 下面的示例循环每个打开的工作簿并关闭它。然后关闭包含这个代码的工作簿。 Private oExcel As Excel.Application Private wbk As Excel.Workbook Sub CloseOpenWrkBks()Dim wrkb As Workbook For Eac

24、h wbk In Application.Workbooks If wrkb.Name “对象浏览器” ,显示对象浏览器窗口,也可以按 F2。在搜索框中输入 xlBuiltInDialog。 单击 Search 按钮。 (2) GetOpenFilename 方法 GetOpenFilename 方法显示标准“打开”对话框并返回用户选择的文件名,实际上并未 打开任何文件。GetOpenFilename 方法给你最大的控制从你的程序中打开一个工作簿,因为 它所做的就是以字符串返回用户选择的文件完整路径和文件名。获得文件名后接着做什么就 取决于你自己了。例如,你可能传递结果给 OpenText 方

25、法。 这个方法的语法如下(所有的参数都是可选的) : GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect) 参数 FileFilter 是一个定义过滤条件(如*.txt,*.xla)的字符串; FilterIndx 指定默认文件过滤条件的序号,从 1 到 FileFilter 中的过滤器数目; Title 指定对话框的标题; ButtonText 只用于 Macintosh 系统; MultiSelect 是一个 Boolean 值,表示可以多选文件。 下面的例子显示“打开”对话框,并在文件类型下拉框中

26、使用文本文件(*.txt)过滤条 件,然后使用消息框显示用户的选择。 Dim fileToOpen As String fileToOpen = Application.GetOpenFilename(“Text Files (*.txt), *.txt“) If fileToOpen “类模块” 2. 在“属性”栏中,更改类的名称为 appEventClass。 3. 在类模块的代码窗口,输入: Public WithEvents Apply As Application 现在 Application 级的事件可以使用了。 4. 现在测试一下,在代码窗口的对象列表中,单击“Apply” 。

27、5. 在代码窗口中的过程列表中,单击 Apply_WorkbookOpen. 这样将在代码窗口中添加 一个自动生成的过程用于 Apply_WorkbookOpen 事件。 6. 修改该过程如下: Private Sub Apply_WorkbookOpen(ByVal Wb As Workbook) MsgBox “你打开了工作簿。“ End Sub 7. 重复以上步骤加入 Apply_WorkbookBeforeClose 事件。修改该事件的代码如下: Private Sub Appl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As B

28、oolean) MsgBox “你关闭了工作簿。“ End Sub 8. 接着,创建一个变量用来代表在类模块中创建的 Application 对象。在 VBA Project 的 Project 栏,双击 ThisWorkbook 节点打开代码窗口。 9. 加入下面的语句。 Dim ApplicationClass As New AppEventClass 通过在 ThisWorkbook 代码窗口中添加以下过 程来建立一个声明的对象到 Application 对象的关联。 Private Sub Workbook_Open() Set ApplicationClass.Appl = Appl

29、ication End Sub 10. 保存并关闭工作簿。 11. 现在打开该工作簿来测试代码。Apply_WorkbookOpen 事件将显示对话框。 12. 关闭工作簿,Apply_WorkbookBeforeClose 将显示对话框。 13. 回到 AppEventClass 类模块, 单击过程列表将显示很多你可以在程序中用来监控动作 的事件。 理解事件怎样被激发并以何种顺序激发对理解你的程序很重要。在类模块中加入其它事 件,并插入消息框,然后尝试不同的动作看看什么时候什么事件将被激活。Application 对象的其它用法 除了一些常用的对象外,你还可以在 Excel 程序中使用 Ap

30、plication 对象的其它的一些 功能。下面讨论部分用法。 (1) 删除工作表时不弹出提示窗口 在下面的例子中,首先关闭任何询问是否需要删除工作表的警告消息框,然后删除工作 表,再设置使警告消息框生效。 Sub DeleteSheet() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = TrueEnd Sub (2) 保存工作簿时无提示 这个例子在保存工作簿时没有提示用户。 Sub SaveWorksheet() Application.DisplayAlerts = Fals

31、e ActiveWorkbook.SaveAs “C:MonthlySales.xls“ Application.DisplayAlerts = True End Sub (3) 使用 SendKeys 发送信息到 Notepad 程序 下面的例子使用 SendKeys 语句从 Excel 语句中复制一个区域的数据到 Notepad 程序中, 并保存为文本文件。 Sub SKeys() Range(“A1:D15“).Copy Copy the range. SendKeys “% n“, True Minimize Excel. Shell “notepad.exe“, vbNormalFo

32、cus Start No tepad. SendKeys “V“, True Past the range data into Notepad. SendKeys “%FA“, True Specify SaveAs. SendKeys “SalesData.txt“, True Provide a file name. SendKeys “%S“, True Save the file. Close notepad End Sub 这个例子首先复制一个区域的数据到剪贴板,然后最小化 Excel,启动 Notepad,然后从 剪贴板复制数据到 Notepad,最后指定文件名并保存文件,再关闭

33、Notepad。 (4) 在指定时间或间隔运行一个宏 你可以使用 Application 对象的 OnTime 方法在指定的时间或以固定时间间隔运行一个过 程。 OnTime 方法的语法如下: Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule) 参数 EarliestTime 表示什么使用运行名称为参数 Procedure 的过程。 可选参数 LatestTime 和 Schedule 变量分别表示运行过程的最后时间和是否新建一个过 程来运行还是取消现有的过程。假如开始运行时 Excel 很忙,你需要指定一个时间范

34、围来调 用过程时参数 LatestTime 很有帮助。 下面的示例每 5 分钟运行指定的过程 YourProc Application.OnTime EarliestTime:= Now + TimeValue(“00:05:00), _ Procedure := “YourProc“ 下面的示例每天正午的时候运行过程 YourProc. Application.OnTime _ EarliestTime:=TimeValue(“12:00:00“), _ Procedure:=“YourProc“ 下面的示例每 5 分钟调用 AutoSave 过程。 如果你关闭工作簿, 调用 Cleanup

35、 过程来取消前面设置的 OnTime。 Private Sub Workbook_Open() Application.OnTime Now + TimeValue(“00:05:00“), “AutoSave“ End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Application.OnTime Now + TimeValue(“00:05:00“), “CleanUp“, , False End Sub 注意: Workbook_Open 和 Workbook_BeforeCl

36、ose 事件包含在 Workbook 模块中。 AutoSave 和 CleanUp 过程应该位于标准模块中。 结论 这篇文章仅介绍 Application 对象的一部分成员。还有其他成员让你的用户以新的方式 同 Excel 程序交互和改变你程序的外观。熟悉 Application 对象的使用将让你按照你自己的 要求扩展和采用 Excel 的功能。 本文出自 51CTO.COM 技术博客Workbook 对象 应用示例 2009-12-29 21:37:01 标签:vba Workbook Workbook 对象代表一个工作簿,Workbooks 集合对象则代表同一 Excel 进程中打开的所

37、 有工作簿对象。应用 1 创建新工作簿(Add 方法) 使用 Add 方法在 Workbooks 集合中创建新工作簿,所创建的工作簿为活动工作簿。其语 法为: Workbooks.Add(Template) 参数 Template 可选, 决定如何创建新工作簿。 如果将该参数设置为已存在的 Excel 模板 文件名称,那么将以该文件作为模板创建工作簿。该参数可以为下列 XlWBATemplate 常量之 一: xlWBATChart(值-4109,代表图表) 、 xlWBATExcel4IntlMacroSheet(值 4) 、 xlWBATExcel4MacroSheet(值 3) 、 xl

38、WBATWorksheet(值-4167,代表工作表) 。 在创建新工作簿时,如果指定该参数,那么将创建包含指定类型工作表的工作簿;如果 省略该参数, 那么将创建包含一定数量空工作表的工作簿, 工作表数为 SheetsInNewWorkbook 属性所设置的数量。 应用示例 1:创建一个新工作簿Sub CreateNewWorkbook1() MsgBox “将创建一个新工作簿.“ Workbooks.Add End Sub 应用示例 2:创建一个新工作簿并命名工作表且添加数据 Sub CreateNewWorkbook2() Dim wb As Workbook Dim ws As Work

39、sheet 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 应用示例 3:创建带有指定数量工作表的工作簿 Sub testNewWorkbook() MsgBox “创建一个带有 10 个

40、工作表的新工作簿“ 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 255 Then Exit Function OriginalWorksheetCount = Application.SheetsIn

41、NewWorkbook Application.SheetsInNewWorkbook = wsCount Set NewWorkbook = Workbooks.Add Application.SheetsInNewWorkbook = OriginalWorksheetCount End Function 自定义函数 NewWorkbook 可以创建最多带有 255 个工作表的工作簿。本测试示例创建一 个带有 10 个工作表的新工作簿。应用 2 打开工作簿(Open 方法)Open 方法用于打开一个现有的工作簿,其语法为: Workbooks.Open(FileName, UpdateLi

42、nks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad) 可以看到,该方法具有很多参数,但大多数参数都很少用到。在这些参数中,除参数 FileName 必须外,其它参数都可选。 参数 FileName 指定要打开的工作簿文件的名称, 参数 UpdateLinks 指定更新工作簿中链 接的方式, 参数 ReadOnly 用来设置是否以只读方式打开

43、工作簿。 如果需要使用密码来打开工 作簿, 则应该将参数 Password 设置为该密码; 如果需要使用密码打开工作簿但没有指定密码, 则会弹出询问密码的对话框。参数 AddToMru 指定是否将工作簿添加到最近使用的文件列表 中,建议将其设置为 True,默认值为 False。 应用示例 4:以只读方式打开某工作簿 Sub openWorkbook2() Dim fname As String MsgBox “将 D 盘中的工作簿以只读方式打开“ fname = “D:测试.xls“ Workbooks.Open Filename:=fname, ReadOnly:=True End Sub

44、应用 3 访问特定的工作簿 使用 Item 属性返回 Workbooks 集合中特定的工作簿。 例如:Workbooks.Item(1)返回 Workbooks 集合中的第一个工作簿。由于 Item 属性是缺 省的属性,因此上述代码也可以简写为: Workbooks(1) 然而,使用索引号来指定工作簿是不可靠的,最好使用工作簿的具体名称来指定特定的 工作簿,例如: Workbooks(“MyBook.xlsx“) 注意, 当用户使用 “新建” 命令创建一个新工作簿 (假设该工作簿系统默认名称为 Book2) 时,在没有保存该工作簿前,应该使用下面的代码指定该工作簿: Workbooks(“Bo

45、ok2“) 此时,如果使用下面的代码指定该工作簿: Workbooks(“Book2.xlsx“) 将会产生运行时错误:下标越界。应用 4 激活工作簿(Activate 方法) 使用 Activate 方法激活指定的工作簿,例如: Workbooks(“MyWorkbook“).Activate应用 5 获得当前打开的工作簿数(Count 属性) 使用 Workbooks 集合对象的 Count 属性来获得当前打开的工作簿数,例如:Workbooks.Count应用 6 判断工作簿是否是只读的(ReadOnly 属性) 如果工作簿以只读方式打开,那么 ReadOnly 属性的值为 True。应

46、用 7 获得工作簿的路径和名称(Name 属性、FullName 属性、Path 属性、CodeName 属性) 使用 Workbook 对象的 Name 属性可以返回工作簿的名称。例如,下面的函数可以返回当 前工作簿的名称: Function MyName() As String MyName = ThisWorkbook.Name End Function 使用 Workbook 对象的 FullName 属性可以返回工作簿的路径和名称。例如,下面的函数 可以返回当前工作簿的路径和名称: Function MyName() As String MyName = ThisWorkbook.N

47、ame End Function 使用 Workbook 对象的 Path 属性可以返回工作簿文件的路径。使用 Workbook 对象的 CodeName 属性返回工作簿对象的代码名。 上述属性均为只读属性。 应用示例 5:一些工作簿通用属性示例 Sub testGeneralWorkbookInfo() MsgBox “本工作簿的名称为“ & ActiveWorkbook.Name MsgBox “本工作簿带完整路径的名称为“ & ActiveWorkbook.FullName MsgBox “本工作簿对象的代码名为“ & ActiveWorkbook.CodeName MsgBox “本工

48、作簿的路径为“ & ActiveWorkbook.Path If ActiveWorkbook.ReadOnly Then MsgBox “本工作簿已经是以只读方式打开“ Else MsgBox “本工作簿可读写.“ End If If ActiveWorkbook.Saved Then MsgBox “本工作簿已保存.“ Else MsgBox “本工作簿需要保存.“ End If End Sub应用 8 保存工作簿(Save 方法) 使用 Save 方法保存对工作簿所作的所有更改,其语法为: Workbook.Save应用示例 6:保存已存在的所有工作簿 Sub SaveAllWorkbo

49、oks() Dim wbk As Workbook For Each wbk In Workbooks If wbk.Path 0 i = InStr(i + 1, BackupFileName, “.“) Wend If i 0 Then BackupFileName = Left(BackupFileName, i - 1) BackupFileName = BackupFileName & “.bak“ OK = FalseOn 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 “备份工作簿未保存!“, vbExclamation, ThisWorkbook.Name End If End Sub 在当前工作簿中运行本示例代码后, 将以与工作簿相同的名称但后缀名

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报