ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 29229|回复: 30

[分享]《使用VBA编写Excel宏》

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-12-10 13:44 | 显示全部楼层 |阅读模式

下面是前阶段学习并翻译的英文书籍中的一章关于Workbook对象的内容,该书由O’REILLY出版社出版,Steven Roman所著,书名为《Writing Excel Macros with VBA》(2nd Edition)。下面的内容为第17章 The Workbook Object(不好意思,该书只有这章的内容供下载,所以我对有些文字和图表编排稍有修改,并改变了标题名,使之成为一篇专题文章。另外,根据该章内容,可能是根据Office XP所写。但在Excel2003中除了对象模型层次结构图有所调整外,所有内容和示例均适用于Excel2003。)

这章也是在O’Relly网站上推出的试读章,参见Sample Chapter——Chapter 17: The Workbook Object

[此贴子已经被作者于2006-12-10 13:44:58编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Workbook对象及其方法、属性解析与示例
在这篇文章中,我们来讨论Workbook对象和Workbooks集合。下图1显示了一部分直接与Workbook对象相关的Excel对象模型。

图1  Workbook对象

[分享]《使用VBA编写Excel宏》

[分享]《使用VBA编写Excel宏》

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Workbooks集合
Application对象有一个Workbooks属性,可以返回一个Workbooks集合,该集合包含所有当前已打开的Excel中的Workbook对象。例如,下面的代码将显示所打开的工作簿的数量:
‘********************************************************************
Sub testWorkbookCount()
  Dim wbs As Workbooks
  Set wbs=Application.Workbooks
  MsgBox wbs.Count
End Sub
‘********************************************************************
下面让我们来看看Workbooks对象的一些属性和方法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

Add方法
Add方法创建一个新的工作簿,并添加到Workbooks集合中,新工作簿成为活动工作簿。其语法为:
    工作簿对象.Add(Template)
在这里,可选参数Template决定如何创建新工作簿。如果该参数为一个指定已存在的Excel模板文件名称的字符串,那么新工作簿将以该文件作为模板创建。
正如您所知道的,一个模板是一个包含目录(例如行和列标签)、格式、宏和其它定制的内容(例如菜单和工具条)的Excel工作簿。当您以一个模板为基础创建一个新工作簿时,该工作簿将从模板中接受目录、格式和定制的内容。
Template参数也可以是下面的常量之一:
Enum xlWBATemplate
      xlWBATWorksheet=-4167
      xlWBATChart=-4109
      xlWBATExcel4MacroSheet=3
      xlWBATExcel4IntlMacroSheet=4
End Enum
在这种情况下,新工作簿将包含有指定类型的单个工作表。如果省略Template参数,那么Excel将创建一个新工作簿,该工作簿带有由Application对象的SheetsInNewWorkbook属性所设置数量的空白工作表。

Close方法
Close方法关闭所有打开的工作簿。其语法为:
    工作簿对象.Close

Count属性
大多数集合对象都有一个Count属性,Workbooks集合也不例外。该属性将返回当前已打开的工作簿的数量。

Item属性
Item属性返回Workbooks集合中特定的工作簿。例如:
    Workbooks.Item(1)
返回Workbooks集合中的第一个工作簿。由于Item属性是缺省属性,因此我们也能简写为:
    Workbooks(1)
注意,我们不能依赖特定的工作簿在集合中的索引号来指定工作簿(对所有的集合对象也如此),您最好使用工作簿的名字指明特定的工作簿,如下所示:
    Workbooks(“Book1.xls”)
注意,如果用户使用“文件”菜单中“新建”命令创建了一个名为Book2的新工作簿,我们应使用下面的代码指定该工作簿:
    Workbooks(“Book2”)
但是,如果您在保存刚新建的工作簿Book2到您的硬盘中之前运行下面的代码:
Workbooks(“Book2.xls”)
将会产生一个错误(下标越界)。

Open方法
该方法打开一个已存在的工作簿,其语法稍微有点复杂:
    工作簿对象.Open(FileNaem,UpdateLinks,ReadOnly,Format,Password, _
WriteResPassWord,IgnoreReadOnlyRecommended,Origin,Delimiter, _
Editable,Notify,Converter,AddToMRU
)
在这些参数中,大多数参数很少用到(例如,几个与打开文本文件有关的参数)。下面我们讨论一些常用的参数,并且在VBA帮助系统中有更多关于这些参数的信息。注意,所有的参数中,除了FileName外都是可选的。
参数FileName是所要打开的工作簿的文件名称。如果想要以只读的方式打开工作簿,则可将ReadOnly参数设置为True。
如果需要用密码来打开工作簿,则PassWord参数应该设置为该密码。如果需要使用密码而您没有指定密码,Excel将弹出对话框询问密码。
参数AddToMru指定将工作簿添加到最近使用的文件列表中,建议您将该参数值设置为True以添加该工作簿到最近使用的文件列表中,该参数的缺省值为False。

[此贴子已经被作者于2006-12-10 13:57:36编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:49 | 显示全部楼层
OpenText方法
这个方法将在一个新工作簿中装入文本文件。该方法分析文本数据并将其放入一个单独的工作表中。其语法稍微有点复杂:
    工作簿对象.OpenText(Filename,Origin,StartRow,DataType,TextQualifier, _
ConsecutiveDelimiter,Tab,Semicolon,Comma,Space,Other,OtherChar,FieldInfo
)
首先要注意的是,除了参数FileName外,该方法的所有参数都是可选的。
参数Filename指定要打开的文本文件的文件名。
参数Origin指定文本文件的来源,可以是下面的XlPlatform常量之一:
Enum XlPlatform
      xlMacintosh=1
      xlWindows=2
      xlMSDOS=3
End Enum
注意,xlWindows的值指定一个ANSI文本文件,而xlMSDOS常量指定一个ASCⅡ文件。如果省略该参数,则需要使用文本导入向导中的文件源选项的当前设置。
参数StartRow指定从文本文件中开始进行分析的文本的行号,缺省值是1。
可选参数DataType指定在字段中的文本格式,可以是下面的XlTextParsingType常量之一:
Enum XlTextParsingType
      xlDelimited=1 ‘缺省值
      xlFixedWidth=2
    End Enum
参数TextQualifier是文本限定符,要以是下面的XlTextQualifier常量之一:
Enum XlTextQualifier
      xlTextQualifierNone=-4142
      xlTextQualifierDoubleQuote=1 ‘缺省值
      xlTextQualifierSingleQuote=2
End Enum
参数ConsecutiveDelimiter应该设置为True,以考虑用连续分隔符作为一个分隔符。缺省的值为False。
有几个参数需要将参数DataType设置为xlDelimited。当这些参数中的任何一个设置为True时,表示Excel应该使用与文本分隔符相应的字符,这些分隔符描述如下:(所有参数缺省值均为False)
Tab 该参数设置为真时,将使用制表符作为分隔符
Semicolon 该参数设置为真时,将使用分号作为分隔符
Comma 该参数设置为真时,将使用逗号作为分隔符
Space 该参数设置为真时,将使用空格作为分隔符
Other 该参数设置为真时,将使用被参数OtherChar指定的字符作为分隔符
当参数Other设置为真时,通过OtherChar指定分隔符。如果参数OtherChar包含多于一个字符时,仅仅使用第一个字符。
参数FieldInfo是一个包含单一来源列信息的数组,该参数的解释依赖于参数DataType的值。
当参数DataType的值为xlDelimited时,参数FieldInfo应该是一个数组,该数组的大小应该与被转换数据的列的数量相同或更小。一个二维数组的第一维是列数(起始数为1),第二维是下面的数值之一,用来指明如何分析列:
数值     描述
1        通常的
2        文本
3        MDY 日期格式
4        DMY 日期格式
5        YMD 日期格式
6        MYD 日期格式
7        DYM 日期格式
8        YDM 日期格式
9        跳过列
如果提供给二维数组的列找不到了,那么该列将被分析为通常的设置。例如,下面参数FieldInfo的值导致第一列为文本,而第三列被跳过:
Array(Array(1,2),Array(3,9))
所有其它的列被视为通常的数据。
下面以一个实例证明,考虑有下面内容的文本文件:(将其存放在D盘的excel文件夹中,并命名为temp.txt)
    "John","Smith","Serial Record",1/2/98
"Fred","Gwynn","Serial Order Dept",2/2/98
"Mary","Davis","English Dept",3/5/98
"David","Johns","Chemistry Dept",4/4/98
下面的代码:
Sub test()
  Workbooks.OpenText Filename:="D:\excel\temp.txt", _
  Origin:=xlMSDOS, _
  StartRow:=1, _
  DataType:=xlDelimited, _
  TextQualifier:=xlTextQualifierDoubleQuote, _
  ConsecutiveDelimiter:=True, _
  Comma:=True, _
  FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 6))
End Sub
运行上面的代码后,将生成如下图2所示的工作表。注意,D列中的单元格作为日期格式化。

图2 一个逗号分隔符文本文件在Excel中打开示例
另一方面,如果参数DataType的值是xlFixedWidth,则每个二维数组的第一个元素指定字符在列中开始的位置(0是第一个字符),第二个元素指定分析选项(1-9)在列中的结果,各项数值所代表的结果描述如上。
为了证实上述描述,考虑有下面内容的文本文件:(将其存放在D盘的excel文件夹中,并命名为temp.txt)
0-125-689
2-523-489
3-424-664
4-125-160
下面的代码:
Sub test()
  Workbooks.OpenText Filename:="D:\excel\temp.txt", _
  Origin:=xlMSDOS, _
  StartRow:=1, _
  DataType:=xlFixedWidth, _
  FieldInfo:=Array(Array(0, 2), Array(1, 9), Array(2, 2), Array(5, 9), Array(6, 2))
End Sub
运行上面的代码后,将生成如下图3所示的工作表。(注意,如何使用数组跳过这些连字符)
 
图3 一个固定宽度文本文件在Excel中被打开示例
最后,观察在Excel中打开的文本文件,并没有转换为Excel工作簿文件。为了保存为Excel工作簿文件,我们能使用SaveAs方法,如下所示:
Application.ActiveWorkbook.SaveAs _
 Filename:="D:\excel\temp.xls", FileFormat:=xlWorkbookNormal
将上面的代码加入上述两个子程序最后即可。
[此贴子已经被作者于2006-12-10 14:01:31编辑过]
25Ut75OB.jpg
HL0bhmb5.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Workbook对象
一个Workbook对象代表一个打开的Excel工作簿,正如我们已讨论过的,Workbook对象存储在Workbooks集合中。
Workbook对象共有103个属性和方法,如下表1。
表1   Workbook对象成员列表
_CodeName          FullName                    RefreshAll
_PrintOut<v9>       FullNameURLEncoded<v10>  RejectAllChanges
_Protect<v10>      HasMailer                    ReloadAs<v9>
_ReadOnlyRecommended<v10>  HasPassword                 RemovePersonalInformation<v10>
_SaveAs<v10>       HasRoutingSlip          RemoveUser
AcceptAllChanges  HighlightChangesOnScreen    Reply
AcceptLabelsInFormulas     HighlightChangesOptions       ReplyAll
Activate                      HTMLProject<v9>      ReplyWithChanges<v10>
ActiveChart                IsAddin                       ResetColors
ActiveSheet                IsInplace                     RevisionNumber
AddToFavorites          KeepChangeHistory   Route
Application                  Keywords                   Routed
Author                         LinkInfo                     RoutingSlip
AutoUpdateFrequency       LinkSources         RunAutoMacros
AutoUpdateSaveChanges  ListChangesOnNewSheet       Save
BreakLink<v10>                  Mailer                        SaveAs
BuiltinDocumentProperties   MergeWorkbook       SaveCopyAs
CalculationVersion<v9>       Modules                    Saved
CanCheckIn<v10>                MultiUserEditing       SaveLinkValues
ChangeFileAccess                Name                       Sblt<v9>
ChangeHistoryDuration         Names                     SendForReview<v10>
ChangeLink                   NewWindow                  SendMail
Charts                           OnSave                        SendMailer
CheckIn<v10>               OnSheetActivate           SetLinkOnData
Close                            OnSheetDeactivate        SetPasswordEncryptionOptions<v10>
CodeName                    OpenLinks                  Sheets
Colors                           Parent                        ShowConflictHistory
CommandBars              Password<v10>          ShowPivotTableFieldList<v10>
Comments                    PasswordEncryptionAlgorithm<v10>   SmartTagOptions<v10>
ConflictResolution         PasswordEncryptionFileProperties<v10>  Styles
Container                      PasswordEncryptionKeyLength<v10>   Subject
CreateBackup               PasswordEncryptionProvider<v10>   TemplateRemoveExtData
Creator                         Path                            Title
CustomDocumentProperties      PersonalViewListSettings          Unprotect
CustomViews                   PersonalViewPrintSettings         UnprotectSharing
Date1904                       PivotCaches                     UpdateFromFile
DeleteNumberFormat            PivotTableWizard                 UpdateLink
DialogSheets                    Post                            UpdateLinks<v10>
DisplayDrawingObjects           PrecisionAsDisplayed             UpdateRemoteReferences
Dummy16<v10>                 PrintOut                         UserControl
Dummy17<v10>                 PrintPreview                     UserStatus
EnableAutoRecover<v10>        Protect                          VBASigned<v9>
EndReview<v10>                ProtectSharing                   VBProject
EnvelopeVisible<v9>             ProtectStructure                  WebOptions<v9>
Excel4IntlMacroSheets           ProtectWindows                  WebPagePreview<v9>
Excel4MacroSheets              PublishObjects<v9>              Windows
ExclusiveAccess                 PurgeChangeHistoryNow         Worksheets
FileFormat                      ReadOnly                       WritePassword<v10>
FollowHyperlink                  ReadOnlyRecommended         WriteReserved
ForwardMailer                   RecheckSmartTags<v10>         WriteReservedBy
表1中所列的一些成员仅返回Workbook对象的子对象,这些子对象见图4。
表2给出了返回子对象的Workbook对象的成员。
 
图4  Workbook对象的子对象
表2 返回子对象的Workbook对象成员
名称                   返回类型
ActiveChart             Chart
Application             Application
Charts                 Sheets
CustomViews           CustomViews
DialogSheets           Sheets
Excel4IntlMacroSheets  Sheets
Excel4MacroSheets     Sheets
Mailer                 Mailer
Modules               Sheets
Names                Names
NewWindow           Window
PivotCaches           PivotCaches
PublishObjects         PublishObjects
RoutingSlip            RoutingSlip
Sheets                Sheets
SmartTagOptions       SmartTagOptions
Styles                 Styles
WebOptions            WebOptions
Windows               Windows
Worksheets            Sheets
在表2中有一些项目值得注意。首先,ActiveSheet属性可能返回Chart对象或者Worksheet对象,这取决于当前工作簿中所激活的是哪类对象。
第二,Charts、Sheets和Worksheets属性都返回一个(不同的)Sheets集合。特别地,Charts对象返回在工作簿中包含所有图表工作表的Sheets集合(这不包括嵌入在工作表中的图表)。Worksheets属性返回在工作簿中所有工作表的Sheets集合。最后,Sheets属性返回所有工作表和图表工作表的Sheets集合。这是一个相当少的一个集合包含多于一类对象的例子。注意,在Excel对象模型中没有Sheet对象。
下面,让我们介绍表1中一些常用的成员。
[此贴子已经被作者于2006-12-10 14:10:40编辑过]
d57sAeoD.jpg

TA的精华主题

TA的得分主题

发表于 2006-12-10 13:51 | 显示全部楼层

虽然本帖内容超过了我的智商,那也坚决支持。收藏,慢慢学。

建议楼主将诸多内容上传个附件,容我等下载后消化。

[此贴子已经被作者于2006-12-10 21:23:22编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:51 | 显示全部楼层
Activate方法
该方法激活工作簿,语法很简单:
Workbooks(“MyWorkBook”).Activate
注意,Workbooks集合是全局的,不需要用Application进行限定。

Close方法
Close方法的作用是关闭工作簿。它的语法是:
工作簿对象.Close(SaveChange,FileName,RouteWorkbook)
注意,Workbook对象的Close方法有三个参数,与Workbooks集合中的Close方法没有参数不一样。
可选参数SaveChanges用于在关闭工作簿前保存工作簿所发生的变化,特别地,如果工作簿没有变化,该参数将被忽略。如果工作簿显现在其它打开的窗口中,该参数也被忽略。另一方面,如果工作簿发生了变化且没有显现在任何其它打开的窗口中,该参数将生效。
在这种情况下,如果SaveChanges的值为True,将存储该变化。如果仍没有一个文件名与工作簿相联系(也就是说,如果先前该工作簿没有保存),那么将使用在参数FileName中所设置的名称。如果参数FileName也被忽略,Excel将提示用户输入一个文件名。如果参数SaveChanges的值为False,则工作簿所发生的变化不会被保存。最后,如果参数SaveChanges被忽略,Excel将显示一个对话框询问是否保存工作簿所发生的变化。简而言之,该方法的行为正如你所希望的。
可选参数RouteWorkbook指出工作簿传送的问题,如果您对该参数感兴趣,可以在ExcelVBA帮助文件中获得更多的信息。
很重要的是,您要注意Close方法检查工作簿的Saved属性,以决定是否去提示用户保存工作簿所发生的变化。如果我们设置Saved属性的值为True,那么Close方法将没有警告而直接关闭工作簿,不会保存工作簿所发生的任何变化。

DisplayDrawingObjects属性

该属性返回或者设置一个值,表示如何显示形状,可以是下面的XlDisplayShapes常量之一:
Enum XlDisplayShapes
      XlDisplayShapes=-4101
      xlPlaceholders=2
      xlHide=3
End Enum

FileFormat属性(只读)
该属性返回工作簿文件格式或者类型,可以是下面的XlFileFormat常量之一:
Enum XlFileFormat
xlAddIn = 18
xlCSV = 6
xlCSVMac = 22
xlCSVMSDOS = 24
xlCSVWindows = 23
xlCurrentPlatformText = -4158
xlDBF2 = 7
xlDBF3 = 8
xlDBF4 = 11
xlDIF = 9
xlExcel2 = 16
xlExcel2FarEast = 27
xlExcel3 = 29
xlExcel4 = 33
xlExcel4Workbook = 35
xlExcel5 = 39
xlExcel7 = 39
xlExcel9795 = 43
xlHtml = 44
xlIntlAddIn = 26
xlIntlMacro = 25
xlSYLK = 2
xlTemplate = 17
xlTextMac = 19
xlTextMSDOS = 21
xlTextPrinter = 36
xlTextWindows = 20
xlUnicodeText = 42
xlWebArchive = 45
xlWJ2WD1 = 14
This is the xlWJ3 = 40
xlWJ3FJ3 = 41
xlWK1 = 5
xlWK1ALL = 31
xlWK1FMT = 30
xlWK3 = 15
xlWK3FM3 = 32
xlWK4 = 38
xlWKS = 4
xlWorkbookNormal = -4143
xlWorks2FarEast = 28
xlWQ1 = 34
xlXMLSpreadsheet = 46
End Enum
[此贴子已经被作者于2006-12-16 8:56:21编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:52 | 显示全部楼层

Name,FullName,Path属性
Name属性返回工作簿的名字,Path属性返回工作簿文件路径,FullName属性返回工作簿文件完整的描述(路径和文件名)。所有这些属性都是只读的。
注意,使用如下代码:
Application.Path
将返回Excel应用程序路径(而不是工作簿路径)。

HasPassword属性(只读/布尔值)
如果工作簿有密码保护,则该只读属性值为True。注意,密码能作为SaveAs方法中的一个参数被指定。

PrecisionAsDisplayed属性(可读写/布尔值)

当该属性的值为True时,在工作簿进行计算时,将仅使用工作表中所显示的数值进行计算,而不是它实际所存诸的值。该属性的缺省值为False,工作表计算基于它们所存储的数值。

PrintOut方法
PrintOut方法打印完整的工作簿。(该方法也应用于一些其它的对象,诸如Range、Worksheet、Chart)其语法为:
    工作簿对象.PrintOut(From,To,Copies,Preview,ActivePrinter,PrintToFile,Collate)
注意,该方法的所有参数均是可选的。
参数From指定需要打印第一页的页码,参数To指定要打印的最后一页。如果忽略这些参数,将打印整个对象(如范围、工作表等)。
参数Copies指定要打印副本的数量,缺省值为1。
将参数Preview设置为True,将弹出打印预览而不是立即打印,缺省值为False。
参数ActivePrinter设置活动打印机的名字。另一方面,设置参数PrintToFile的值为True将导致Excel打印到一个文件,Excel将提示用户该输出文件的名字。(不巧的是,没有办法用代码指定所要输出文件的名字)。
应该设置参数Collate的值为True,以逐份打印每份副本。

PrintPreview方法
该方法产生Excel的打印预览功能,其语法是:
工作簿对象.PrintPreview
注意,PrintPreview方法应用到与PrintOut方法相同的一组对象。

Protect方法
该方法保护工作簿,以便它不能被修改。其语法为:
工作簿对象.Protect(Password,Structure,Windows)
该方法也应用于图表或者工作表,但语法略有不同。
可选参数Password指定一个密码(对大小写敏感),如果忽略该参数,工作簿没有被保护,不需要密码。
设置可选参数Structure的值为True,以保护工作簿的结构——也就是说,在工作簿中工作表的相关位置,缺省值为False。
设置可选参数Windows的值为True,以保护工作簿窗口,缺省值为False。

ReadOnly属性(只读/布尔值)
如果工作簿作为只读被打开,则该属性的值为True。

RefreshAll方法
该方法更新工作簿中所有外部数据区域和数据透视表,其语法为:
工作簿对象.RefreshAll

Save方法
该方法保存工作簿中的任何变化。其语法为:
工作簿对象.Save

SaveAs方法
该方法在指定的文件中保存工作簿所发生的变化。其语法为:
Expression.SaveAs(Filename,FileFormat,Password,WriteResPassword, _
ReadOnlyRecommended,CreateBackup,AccessMode,ConflictResolution, _
AddToMru,TextCodePage,TextVisualLayout
)
参数Filename指定使用保存到磁盘中的文件名,如果没有包括路径,Excel将使用当前文件夹。
参数FileFormat指定所使用保存文件时的文件格式,其值为我们在前面的FileFormat属性中所介绍过的XlFileFormat常量之一。
参数Password在保存文件时用来指定密码,能使用的任何字符,区分大小写但不得超过15个字符。
参数WriteResPassword是一个字符串,指定文件的写保护密码。如果一个文件带有写保护密码保存,当下一次没有提供密码打开该文件时,该文件将以只读方式打开。
我们可以设置参数ReadOnlyRecommended的值为True,当文件打开时显示一个消息。建议文件以只读方式找开。
设置参数CreateBackup的值为真,以创建一个备份文件。
参数AccessModeConflictResolution指定共享问题,您能在ExcelVBA帮助系统中找到详细的介绍。
设置参数AddToMru的值为True,以添加工作簿到最近使用的文件列表中,缺省值为False。
其它参数不会在英文版的Excel中使用。

SaveCopyAs方法
该方法保存工作簿的一份副本,但不会修改已打开的工作簿。其语法为:
工作簿对象.SaveCopyAs(Filename)
参数Filename指定原文件副本的文本名。

Saved属性(可读写/布尔值)
如果工作簿自上次保存以来没有发生任何变化,则该属性值为True。注意,该属性的值是可读写的,这意味着我们能设置该属性的值为True,即使该工作簿在上次保存之后发生过变化。正如前面所介绍过的,我们能设置该属性的值为True,关闭被修改过的工作簿,而不提示保存当前已发生的变化。
[此贴子已经被作者于2006-12-16 9:00:39编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-10 13:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

Workbook对象的子对象
图5所显示的是Workbook对象的子对象(该图为图4的重复)。
 
图5  Workbook对象的子对象
让我们快速地介绍一下这些子对象中的一部分。(我们将在本书稍后部分介绍Window对象、Worksheet对象和WorkbookEvents对象)


CustomView对象
CustomViews属性返回CustomViews集合,在该集合中的每一个CustomView对象代表工作簿的自定义预览。CustomView对象是相当简单的,因此,我们将只介绍一个示例。如图6所示的工作表。
 
图6  CustomView对象示例
如果我们使用Autofilter命令对年份进行筛选,则结果如图7所示。
 
图7  筛选后的结果
下面的代码将这个自定义的视图命名为View1998:
    ThisWorkbook.CustomViews.Add "View1998"
现在我们可以使用下面的代码在任何时间显示该视图:
    ThisWorkbook.CustomViews!View1998.Show
或者:
    strView = "View1998"
ActiveWorkbook.CustomViews(strView).Show

Names集合
与Application对象一样,Workbook对象有一个Name属性,返回一个Names集合,该集合代表与工作簿相关的Name对象。要详细了解Name对象的信息,请参见第16章Application对象。

Sheets集合
Sheets属性返回一个Sheets集合,包含在工作簿中每个工作表中的Worksheet对象和每个图表工作表中的Chart对象。我们将在本书稍后的章节介绍Worksheet对象和Chart对象。

Styles集合和Style对象
一个Style对象代表单元格区域一组格式选项。每个工作簿有一个Styles集合,包含该工作簿所有Styles对象。
为了对某单元格区域应用样式,我们可以编写下面的代码:
RangeObject.Style=styleName
在这里,StyleName是某样式的名称。
为了创建一个Style对象,可以使用Add方法,其语法为:
工作簿对象.Add(Name,BasedOn)
注意,Add方法返回新创建的Style对象。
参数Name指定样式的名称。可选参数BaseOn指定某Range对象,该对象指向所运用样式的单元格作为新样式的基础,如果忽略该参数,新创建的样式以Normal(正常)样式为基础。
注意,根据文档资料,如果样式所指定的名称已存在,则Add方法将基于在参数BaseOn中所指定的单元格重新定义已存在的样式。(然而,在我的系统中,Excel报出了一个错误信息,因此您应仔细检查。)
Style对象的属性代表了不同的格式特征,诸如字体名称、字体大小、数字格式、对齐,等等。也有几个内置的样式,诸如Normal、Currency和Percent,这些内置的样式能在Style对话框中的Style名称框找到(在格式菜单下)。

下面举一个例子。示例代码将创建一个样式,然后应用它到当前工作表中一个独立的范围中:
‘********************************************************************
Sub test3()
  Dim st As Style
  '如果样式已存在则删除
  For Each st In ActiveWorkbook.Styles
    If st.Name = "Bordered" Then st.Delete
  Next
  '创建样式
  With ActiveWorkbook.Styles.Add(Name:="Bordered")
    .Borders(xlTop).LineStyle = xlDouble
    .Borders(xlBottom).LineStyle = xlDouble
    .Borders(xlLeft).LineStyle = xlDouble
    .Borders(xlRight).LineStyle = xlDouble
    .Font.Bold = True
    .Font.Name = "Arial"
    .Font.Size = 36
  End With
  '应用样式
  Application.ActiveSheet.Range("A1:B3").Style = "Bordered"
End Sub
‘********************************************************************


[此贴子已经被作者于2006-12-16 9:04:39编辑过]
erHqo2oG.jpg
1N4d3q64.jpg
T0mUtls3.jpg
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-25 11:30 , Processed in 0.044455 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表