第二章、Excel工作薄和工作表操作

02-00、工作薄和工作表的基础知识

定义与关联:工作薄就是一个Excel文件,这个文件是由多张工作表组成的,比方说如果工作薄看做一本书,而工作表可以看做是表里的每一页。

大小:一本书到底有多厚,工作薄可以建多少个工作表,有的教材上面说是255,实际上是不完全准确的,工作表能建立多少取决于内存的大小

重要性:工作薄(workbook)与工作表(worksheet)是Excel VBA中非常重要的两个对象

工作中经常对几个工作薄中的数据进行汇总,也可能对一个表中的数据进行按不同的方式分单。

分到不同的工作表,甚至分到不同的工作薄,手工操作是一个非常麻烦的事情,所以一般通过VBA来处理,那么就需要我们对VBA中的工作表工作薄的各种表达方式以及操作有一个非常熟悉的了解,才能写出好的代码。

02-01、工作薄的表示方法

VBA中,经常要在不同工作薄之间转换,工作薄的表示方法很重要,我们来看看工作薄的几种表示方法。

例子:将所有打开的工作薄的名称取出来

以上两种方法都可以提取出工作薄的名称

02-02、当前工作薄与活动工作薄

当前工作薄:thisworkbook,代码所在的工作薄

活动工作薄:activeworkbook  激活工作薄,即正在用的工作薄

例:

Sub 当前与活动工作薄区别()
MsgBox ThisWorkbook.Name & "---" & ActiveWorkbook.Name
End Sub

Sub 运用()
MsgBox ThisWorkbook.Path & Chr(10) & ThisWorkbook.FullName
End Sub

验证当前工作薄是否打开

Sub 验证当前工作薄是否打开()
Dim wk As Workbook
For Each wk In Workbooks
     If wk.Name = "学习VBA.xlsm" Then
          MsgBox "已经激活工作薄" & Chr(10) & wk.name
          Exit Sub
     End If
Next
MsgBox "没有发现工作薄,学习VBA.xlsm"
End Sub

02-03、工作薄的基本操作

workbooks由当前所有的内存中打开的workbook对象组成

向workbooks添加workbook对象

以下的操作不仅仅是针对Excel文件,对其他所有文件类型都适用比如:txt,doc等

Sub 新建工作薄()
Dim wkb As Workbook ‘声明wkb为工作薄对象
Set wkb = Workbooks.Add ‘新建工作薄,前面要加set
wkb.SaveAs "C:\Users\asus\Desktop\123.xlsx" ‘保存为工作薄
End Sub

Sub 打开工作薄()
Dim wkb As Workbook
Set wkb = Workbooks.Open("C:\Users\asus\Desktop\123.xlsx")
End Sub

Sub 关闭工作薄()
Workbooks("123.xlsx").Close True ‘后面的true为关闭时提示是否保存更改,选是
End Sub

Sub 文件复制和删除()
FileCopy "C:\Users\asus\Desktop\123.xlsx", "C:\Users\asus\Desktop\321.xlsx"
‘对所有文件类型都适用,新建一个工作薄,路径和名称确认好
Kill "C:\Users\asus\Desktop\321.xlsx" ‘删除工作薄
End Sub

02-04、工作薄实例应用

判断文件是否存在

Sub 文件是否存在()
Dim a As String
a = Dir("C:\Users\asus\Desktop\123.xlsx") ‘取出目录下的文件
If a = "" Then
MsgBox "不存在路径文件"
Else
MsgBox "存在文件123"
End If
End Sub

Sub 打开指定目录下的文件()
Dim a As String
a = Dir("C:\*.xlsx")
Workbooks.Open "C:\" & a
Do
    a = Dir
   If a <> "" Then
         Workbooks.Open "C:\" & a
  Else
      Exit Sub
  End If
Loop
End Sub

02-05、工作表的表示方法

在workbook对象中,有一个sheets集合,其成员是worksheet对象或者chart对象

worksheets仅指的是工作表,而sheets包含图表,工作表,宏表等等

VBA中,经常在工作表之间转换或者对不同工作表中的单元格区域进行操作

通常有下面几种方法:

注意:

当工作薄包含工作表、宏表、图表等时,使用索引号引用工作表如sheet(1)与worksheets(1)引用的可能不是同一个表,因为sheet中包含图表等,而worksheet仅仅只包含工作表

Sub sheetss()
Dim i As Integer
For i = 1 To sheets.Count  
MsgBox sheets(i).Name  ‘显示每个工作表的名称
Next
End Sub

02-06、工作表集合的应用

Sub 遍历所有的sheets()
Dim k As Integer
For Each sht In sheets
     k = k + 1
    Sheet2.Cells(k, 1) = sht.Name
Next
End Sub

如果有四个表,将会返回四个表“我的图表”,“我的工作表”,“sheet2”,“sheet3”

Sub 遍历worksheets()
Dim k As Integer, sht As Worksheet
For Each sht In Worksheets
     k = k + 1
    Sheet2.Cells(k, 2) = sht.Name
Next
End Sub

如果有四个表,将会返回三个表“我的工作表”,“sheet2”,“sheet3”

Sub 判断工作表是否存在()
For Each sht In sheets
   If sht.Name = "我的工作表2" Then
     MsgBox "存在"
    GoTo 100:
   End If
Next
MsgBox "不存在"
100
End Sub

方法2:

Sub 判断工作表是否存在2()
Dim i As Integer
For i = 1 To sheets.Count
    If sheets(i).Name = "我的工作表2" Then
        MsgBox "存在"
       Exit Sub
    End If
Next
MsgBox "不存在"
End Sub

02-07、工作表的增加与删除

增加:

Sheets.Add

表达式:Add(Before,After,Count,Type)

X|SheetType 常量之一:

XlWorksheet   工作表   XlChar  图表   XlExcel4MacroSheet  宏表   XlExcel4IntlMacroSheet 对话框

不指定默认的情况下为X|SheetType 工作表,位置为活动工作表之前

Sub 增加()
‘sheets.Add ‘在活动工作表之前添加一个工作表
‘sheets.Add sheets("ABC") ‘在工作表ABC之前添加工作表
‘sheets.Add , sheets("ABC") ‘在工作表ABC之后添加工作表
‘sheets.Add Count:=2 ‘在活动工作表之前添加2个工作表
‘sheets.Add , , 2 ‘在活动工作表之前添加2个工作表
‘sheets.Add , , , xlChart ‘添加图表
End Sub

Sub 工作表的删除()
Sheet11.Delete
End Sub

02-08、工作表增加删除实例

Sub 新建1到12月份工作表()
Dim i As Integer
For i = 12 To 1 Step -1
Sheets.Add.Name = i & "月"
Next
End Sub

Sub 删除工作表()
Application.DisplayAlerts = False ‘关闭弹出窗口
Dim j As Integer
For j = 1 To 12
Sheets(j & "月").Delete
Next
Application.DisplayAlerts = True ‘打开弹出窗口
End Sub

Application.DisplayAlerts = False ‘关闭弹出窗口

Application.DisplayAlerts = True ‘打开弹出窗口

02-09、工作表的移动和复制

Sub 移动()
Sheet1.Move , Sheet15 ‘move([before,after])
‘将sheet1表移动到sheet15表后面
Sheet1.Move after:=Sheet14 ‘两种表达方式一样
End Sub

Sub 复制()
Sheet1.Copy , Sheet15 ‘将sheet1复制到sheet15之后
Sheet1.Copy , Sheets(Sheets.Count) ‘将复制的工作表放到最后
End Sub

Sub 新建1到12月工作表()
Dim i As Integer, sht As Worksheet
For i = 1 To 12
     Set sht = Sheets.Add ‘新建工作表
            sht.Move , Sheets(Sheets.Count) ‘将工作表移动到最后
            sht.Name = i & "月" ‘给工作表命名
Next
End Sub

02-10、工作表的选择与激活

worksheet.select   选择方法

worksheet.activate  激活方法,使当前工作表成为活动工作表

Sub 工作表选择()
Sheet1.Select ‘不支持隐藏选取工作表
Sheet15.Activate ‘支持选取隐藏的工作表
End Sub

Sub 快速选取所有工作表()
Worksheets.Select
Sheets.Select
End Sub

Sub 自定义选择()
Worksheets(Array(1, 3, 5)).Select  ‘1,3,5工作表被选择
End Sub

02-11、工作薄综合运用(拆分工作表)

Sub 拆分工作表()
Application.DisplayAlerts = False
Dim sht As Worksheet, i As Integer, wk As Workbook, ss As String
For Each sht In Workbooks("工作簿1.xlsx").Sheets
     Set wk = Workbooks.Add ‘给变量赋值变量要加set
     i = i + 1
    Workbooks("工作簿1.xlsx").Sheets(i).Copy wk.Sheets(1)
    ‘将原先工作薄中的工作表一个个赋值给新的工作薄中
   ss = ThisWorkbook.Path & "\" & sht.Name & ".xlsx" ‘保存路径
   wk.SaveAs ss
   wk.Close
Next
Application.DisplayAlerts = True
MsgBox "工作薄拆分完成"
End Sub

时间: 2024-10-11 01:41:58

第二章、Excel工作薄和工作表操作的相关文章

EXCEL 建立工作薄与工作表

1 //1.引用单元 2 uses ComObj; 3 4 //2.建立工作薄与工作表 5 procedure TForm1.Button1Click(Sender: TObject); 6 Var 7 ExcelApp,Sheet:Variant; 8 begin 9 ExcelApp:=createoleobject('excel.application'); 10 ExcelApp.workbooks.add(1); 11 ExcelApp.worksheets.add; 12 Excel

合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友_python

这时候还需要把各个工作表合并到一起来形成一个汇总表.这时候比较麻烦也比较容易出错,因为各个表的学号不一定都是一致的.对齐的.因为可能会有人缺考,有人会考号涂错等等.特奉献以下代码,用于合并学生成绩表或者其它类似的表都可以.本代码特点在于不需要使用SQL或者Access等大头软件,只需要Excel就可以执行,非常方便,速度也不慢.转载请勿清除广告. 没有合适的局域网管理软件吗?你的网管工具够灵活够高效吗?看看这个network management software. ' ============

第二章 创建、删除和修改表

创建表 create table 表名(属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件]): 注:建表前先选择数据库 约束条件 约束条件 说明 primary key 设为主键 foreign key 设为外键,是与之联系的某表的主键 not null 设该属性不能为空 unique 标识该属性的值是唯一的 auto_increment 标识该属性的值自动增加 default 设置该属性的默认值 查看表结构 describe 表

个人永久性免费-Excel催化剂功能第53波-无比期待的合并工作薄功能

合并工作薄.工作表功能,几乎每一款Excel插件都提供,而且系列衍生功能甚至有多达10多个.今天Excel催化剂重拾武器,在现有众多插件没提供到位的部分场景中,给予支持和补充,做到人有我优,人无我有的境地,重新定义怎样才算是一个精品级功能. 背景介绍 Excel催化剂一直留空没开发工作薄功能,并非因其太复杂或无需求.正是因为需求很大,而现有的插件都有提供. 最重要的是连微软官方都提供了此功能,使用PowerQuery的ETL功能,无论从易用性还是功能强大性来说,秒杀市面一切的第3方开发的功能.

破解Excel2010受保护的工作薄

今天同事遇到一个Excel的问题,他忘记了工作薄保护的密码,以至于无法再编辑文档内的数据.所以跑过来求助.这个问题最后解决了,但个人觉得比较有意思,所以把这个方法发布出来,也权当是给自己做个笔记吧. 首先确认,他所使用的版本为64位英文版Office2010. 如果不输入受保护的工作薄密码,那么当尝试编辑工作薄的内容时会得到以下报错 中文意思是"您试图更改的单元格或图表受保护,因而是只读的.若要修改受保护单元格或图表,请先使用'撤消工作表保护'命令(在'审阅'选项卡的'更改'组中)来取消保护.可

第二章 Oracle数据库应用

第二章   Oracle数据库应用2.1 表空间和用户权限下管理    2.1.1 表空间        2.1.1.1 分类:            永久性表空间            临时性表空间            撤销表空间        2.1.1.2 表空间的目的            对不同的用户分配不同的空间            将不同的数据文件创建到不同的磁盘        2.1.1.3 创建表空间            2.1.1.3.1 语法:            

数据结构第二章小结

第二章主要学习的是线性表,其中包含了顺序表以及链表,顺序表有两种结构体定义,一种是指针,再申请相应数组空间,一种是直接定义数组,前者数组为堆空间,后者则为栈空间,如果数组长度过大,得考虑空间是否充足问题,因而前者适用性更好: 链表主要为单链表,循环链表,双向链表:主要涉及到删除.查找.插入等操作,在学习链表过程中,主要问题是没能充分理解语句的意思,在插入语句中,类似p=s(p为辅助指针.s为指向新结点的指针)总是理解为这一步就插入成功了,插入应该是通过辅助指针来改变所指向的结点的数据域,这样才是

Netty源码分析第2章(NioEventLoop)----&gt;第6节: 执行selector操作

Netty源码分析第二章: NioEventLoop 第六节: 执行select操作 分析完了selector的创建和优化的过程, 这一小节分析select相关操作 跟到跟到NioEventLoop的run方法: protected void run() { for (;;) { try { switch (selectStrategy.calculateStrategy(selectNowSupplier, hasTasks())) { case SelectStrategy.CONTINUE

如何把一个excel工作薄中N个工作表复制到另一个工作薄中

一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄 第二部:按住Shift键,选择所有要复制的工作表,在选择的工作表上单击右键 第三步:在弹出的菜单中,选择移动或复制(M)...选项. 第四步:在新弹出的窗口中选择转移到的目标工作薄,以及放置的位置.点击确定,转移成功.