工作簿(Workbook)基本操作应用示例(一)


Workbook对象代表工作簿,而Workbooks集合则包含了当前所有的工作簿。下面对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


示例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 & "个工作簿被激活,还要继续吗?", vbYesNo)
    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", Structure:=True
  MsgBox "保护工作簿窗口,密码为123"
  ActiveWorkbook.Protect Password:="123", Windows:=True
  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 & "保存", , ActiveWorkbook.Name
  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
示例说明:代码中<>中的内容为需要重命名的工作簿所在路径及新旧名称。该方法只是对未打开的文件进行重命名,如果该文件已经打开,使用该方法会提示错误。


示例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", RefersToR1C1:="=Sheet1!R1C1"
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
示例说明:示例代码运行后,将创建一个新工作簿并带有用户使用当前工作簿的信息,即用户名、打开的日期和时间及工作簿使用方式。


示例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

工作簿(Workbook)基本操作应用示例(一)相关推荐

  1. 工作簿(Workbook)基本操作应用示例

    Workbook对象代表工作簿,而Workbooks集合则包含了当前所有的工作簿.下面对Workbook对象的重要的方法和属性以及其它一些可能涉及到的方法和属性进行示例介绍,同时,后面的示例也深入介绍 ...

  2. 工作表(Worksheet)基本操作应用示例

    工作表(Worksheet)基本操作应用示例 分类:ExcelVBA>>ExcelVBA编程入门范例 在编写代码时,经常要引用工作表的名字.知道工作表在工作簿中的位置.增加工作表.删除工作 ...

  3. VBA基础,工作簿workbook相关的方法和属性

    0 我觉得VBA和VB,VBS最大的区别就在A(application)上了 所以application里的 workbook  , worksheet   range ,cell等应该是VBA语言的 ...

  4. onedrive已停止工作_4、工作簿的基本操作

    1.   Excel文件类型 Excel文件类型是指Excel工作簿文件,默认情况下,Excel2019的工作簿扩展名为".xlsx"(Excel2007-Excel2019默认的 ...

  5. EXCEL跨sheet 或者跨 workbook 工作簿 查询是否有重复的!(说明了,跨表只要其他表打开,都可以正常操作,查找,甚至修改,读取等)

    EXCEL可以这样查询重复 同1个sheet内 同1个workbook,不同的sheet内 不同的workbook之间 EXCEL跨sheet 或者跨 workbook 工作簿 查询是否有重复的! C ...

  6. Workbook 对象 应用示例

    MSN/QQ 分享本资源给:MSN QQ好友 论坛 分享本资源给:论坛好友(UBB代码) 开心 人人 豆瓣 新浪微博 博主的更多文章>> Workbook 对象 应用示例 2009-12- ...

  7. 使用Python批量处理工作簿和工作表

    使用Python批量处理工作簿和工作表 批量新建并保存工作簿 批量打开一个文件夹中的打开工作簿 批量重命名一个工作簿的所有工作表 批量重命名多个工作簿 批量重命名多个工作簿中的同名工作表 将一个工作簿 ...

  8. update两个表中的同一字段的数据_用Python实现多个工作簿中的数据按列合并到同一个工作表中...

    1.需求描述 现在有三个工作表,如下: 在这里插入图片描述 并且每个工作表中的内容如下: 在这里插入图片描述 需要将这三个工作簿中的分数这一列合并到一起,最终实现效果如下图: 在这里插入图片描述 2. ...

  9. Python+Excel系列:批量处理Excel文件的模块—xlwings:创建、保存、打开工作簿,操控工作表和单元格

    文章目录 认识xlwings模块 1.创建工作簿 2.保存工作簿 3.打开工作簿 4.操控工作表和单元格 综合实例 认识xlwings模块 可以用来处理Excel文件的python模块很多,如Xlsx ...

最新文章

  1. 中国现代化进程专题讲座——有感
  2. linux mysql设置开机启动脚本_linux下添加oracle自启动脚本
  3. cocos2dx-2.2.0的开始
  4. Office 2010 中的 UI 扩展性
  5. C++右值引用的参考
  6. mysql改变地址_mysql 修改数据库存储地址
  7. 次债危机:全世界陪着美国等死
  8. Google 开源下一代高安全性机密运算开发框架 Asylo
  9. VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器
  10. linux内核编程-内核态文件操作
  11. 如何查找Steam好友代码(以及添加好友代码)
  12. python在直方图上画折线图_在python中,在柱状图上绘制一个折线图
  13. 大忽悠:神州行单向收费
  14. 无限循环滚动代码阿里巴巴国际站店铺装修代码底图滚动黑色半透明显示效果自定义内容装修代码全屏显示
  15. FPGA--有限状态机(FSM)的设计
  16. 点餐APP 冲刺二总结
  17. 艾美捷人重组MEGACD40L蛋白(可溶性)实例展示
  18. “金山云感知城市”在重庆智博会发布 加速推动智慧城市发展
  19. 【搜索方法】google搜索
  20. form表单提交编码介绍

热门文章

  1. 手机怎么压缩照片?手机压缩照片方法分享
  2. Unity3D合成大西瓜
  3. 曲线图chart.js插件例子
  4. RGB 和 CYMK 的区别
  5. PANDA pipeline的安装与使用-安装(1)
  6. k-fold cross validation 相关的帖子、论文 建议收藏哦 ~
  7. LaTex排版一二三
  8. jquery获取当前时间戳的正确时间
  9. github中clone代码到本地与直接下载压缩包的区别
  10. c++ value categories