【VBA编程】14.操作工作簿对象
【访问工作簿】
对已经打开的工作簿,可以通过使用索引号来访问工作簿,也可以通过名称来访问工作簿
【代码区域】
Sub 访问工作簿()
Dim counter As Integer
counter = Workbooks.Count
Debug.Print
Debug.Print "当前打开工作簿的数目为:" & CStr(counter)
Debug.Print "按索引号访问工作簿如下:"
Debug.Print "第一个工作簿是:" & Workbooks().name
Debug.Print "第一个工作簿是:" & Workbooks().name
Debug.Print "按名称访问工作簿如下:"
Debug.Print "第一个工作簿是:" & Workbooks("VBA.xlsm").name
Debug.Print "第一个工作簿是:" & Workbooks("TEST.xlsx").name
End Sub
【打印结果】
现在打开的工作簿为:
【获取工作簿信息】
【代码区域】
Sub 获取工作簿信息()
Dim wb As Workbook
Set wk = Workbooks()
wk.Activate
Debug.Print
Debug.Print "当前Excle文档的信息如下:"
Debug.Print "工作簿的名称为:" & wk.name
Debug.Print "工作簿的保存位置为:" & wk.Path
Debug.Print "工作簿是否只读:" & CStr(wk.ReadOnly)
Debug.Print "工作簿的全名为:" & wk.FullName
Debug.Print "工作簿是否需要密码:" & wk.HasPassword
End Sub
【结果展示】
【新建工作簿】
【代码区域】
Sub 新建工作簿()
Dim wb As Workbook
Dim wk As Worksheet
Rem 设置初始化工作簿中默认的工作表数目
Application.SheetsInNewWorkbook =
Set wb = Workbooks.Add '新建工作簿
Set ws = wb.Sheets()
ws.name = "产品"
Set ws = wb.Sheets()
ws.name = "原料"
Rem 恢复初始工作簿中默认的工作表
Application.SheetsInNewWorkbook =
MsgBox "成功完成了新建工作簿!", vbOKOnly, "新建工作簿"
Set wb = Nothing
Set ws = Nothing
End Sub
【结果展示】
【使用对话框打开工作簿】
【代码区域】
Sub 使用对话框打开工作簿()
Dim fileInformation As String
fileInformation = Application.GetOpenFilename("Excle 工作簿(*.xlsx),*.xlsx")
End Sub
【结果展示】
【备份工作簿】
【代码区域】
Sub 备份工作簿()
Dim wk As Workbook
Dim mypath As String
Dim myfile As String
Dim filefull As String
Set wk = Workbooks()
wk.Activate
mypath = wk.Path
myfile = "备份" + wk.name
filefull = mypath + "\" + myfile
wk.SaveCopyAs filefull
'vbLf 换行
MsgBox "备份成功!" & vbLf & "备份文件于" & mypath & "\" & & myfile & vbLf & "备份文件的全名为:" & filefull, vbOKOnly, "备份工作簿"
Set wk = Nothing
End Sub
【效果展示】
【使用保存对话框保存工作簿】
【代码区域】
Sub 使用保存对话框来保存文件()
Dim wk As Workbook
Dim fileinfo As String
Set wk = Workbooks()
wk.Activate
fileinfo = Application.GetSaveAsFilename(exclefile, "Excle 工作簿(*.xlsm),*.xlsx")
If fileinfo = "False" Then
MsgBox "请输入工作簿名字", vbOKOnly, "保存工作簿"
Exit Sub
End If
wk.SaveAs Filename:=fileinfo
Set wk = Nothing
End Sub
【效果展示】
【设置工作簿窗口大小】
【代码区域】
Sub 设置工作簿窗口大小()
Dim win As Window
Dim windate As Long
Dim winwidth As Long
Dim winheight As Double
Set win = Application.ActiveWindow
win.Activate
With win
winstate = .WindowState
winwidth = .Width
winheight = .Height '设置窗口状态
.WindowState = xlNormal
.Width =
.Height =
MsgBox "设置窗口大小之前:" & vbLf & "窗口状态为:" & CStr(winstate) & vbLf & "窗口宽度为:" & CStr(winwidth) & vbLf & "窗口高度为:" & CStr(winheight) & vbLf & "设置窗口大小之后:" & vbLf & "窗口状态为:" & CStr(.WindowState) & vbLf & "窗口宽度为:" & CStr(.Width) & vbLf & "窗口高度为:" & CStr(.Height)
End With
End Sub
【效果展示】
【冻结窗口】
在Excle中可以直接使用冻结窗口冻结,但是这个不是很方便
下面我们使用宏来自定义冻结的行
【代码区域】
Sub 冻结窗口()
Dim win As Window
Set win = Application.ActiveWindow
With win
.Split = True '冻结开关打开
.SplitColumn = '从第4列开始冻结
.SplitRow = '从第3行开始冻结
End With
win.FreezePanes = True '拆分冻结项打开
MsgBox "冻结完成!", vbOKOnly, "冻结窗口"
Set win = Nothing
End Sub
【效果展示】
【更改工作簿名称】
【代码区域】
Sub 更改工作簿名称()
Dim filename As String
filename = "C:\OLIVER.xlsx"
Name filename As "C:\OLIVER_附件.xlsx"
MsgBox ("工作簿名称修改完成"), vbOKOnly, "修改名称"
End Sub
【效果展示】
【关闭工作簿】
【代码区域】
Application.ActiveWorkbook.Close
Application.Quit
【VBA编程】14.操作工作簿对象的更多相关文章
- [VBA]汇总多个工作簿的指定工作表到同一个工作簿的指定工作表中
sub 汇总多个工作簿() Application.ScreenUpdating = False Dim wb As Workbook, f As String, l As String, n As ...
- 【VBA】打开关闭工作簿等
打开关闭工作簿等 1 Sub 打开工作簿() 2 Dim sFilePath As String 3 sFilePath = "D:\A.xls" 4 Dim oWB As Wor ...
- 【VBA】点击工作簿中的每个单元格,整行整列变色
需求描述 在点击单元格的时候,单元格所在行与列都变色显示 实现方案 打开Excle表格,按住ALT+F11 双击上图中的ThisWorkbook Private Sub Workbook_SheetS ...
- 【VBA编程】09.使用Excle集合对象
使用Workbooks工作簿集合.工作簿对象.工作表集合.工作表对象,并且观察使用Add方法前后工作簿与工作表数目的变化 [代码区域] Sub 测试集合工作簿() Dim wbs As Workboo ...
- 在Excel里如何将多个工作簿合并到一个工作簿中
在Excel里如何将多个工作簿合并到一个工作簿中 当你必须将多个工作簿合并到一个工作簿时,你遇到过麻烦吗?最让人心烦的就是需要合并的工作簿里有很多张工作表.有人能推荐方法解决这个问题吗? 利用VBA ...
- excel-合并多个Excel文件--VBA合并当前目录下所有Excel工作簿中的所有工作表
在网上找EXCEL多文件合并的方法,思路: 一.Linux 或者window+cmder,直接用命令行cat合并EXCEL文件,但是,需要安装辅助东西才能直接处理(也许也不可以,但是,可以用文件格式转 ...
- Excel VBA 从一个工作簿查找另一个一个工作簿中的一些内容复制到另外一个工作簿
帮朋友来写个Excel VBA 以前写过ASP,所以对vb略微熟悉,但VBA 没有仔细研究过. 以前只研究过 vba 写一个 计算个人所得税的程序. 这次写的功能也算是简单,但也耗费了两天的功夫. 需 ...
- Excel VBA入门(九)操作工作薄
虽然我前面讲过,在VBA中操作工作薄并不是件明智的事,但有些时候,还是避免不了要这么做.绝大多数情况下,我们要做的是获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理. ...
- Excel VBA入门(五)Excel对象操作
本章是本系列教程的重点.但我觉得应该不是难点.从第零章开始到学完本章,应该可以把VBA用于实战中了. Excel对象主要有4个: 工作薄 Workbook 工作表 Worksheet 单元格区域 Ra ...
随机推荐
- DHCP获取IP地址过程中捕获的报文—三级网络总结(二)
上一篇文章主要说了一下知识点中的IP地址的考点,这一篇我打算说说DHCP获取IP地址过程中捕获的报文的这个考点,都是自己的理解,有错误欢迎指正. DHCP是应用层协议,UDP是传输层协议,IP是网络层 ...
- poj 1681(Gauss 消元)
Painter's Problem Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5875 Accepted: 2825 ...
- 【数论】【莫比乌斯反演】【线性筛】hdu6134 Battlestation Operational
看这个题解吧:http://blog.csdn.net/wubaizhe/article/details/77338332 代码里顺便把几个常用的线性筛附上了. Key:1.gcd(i,j)==1利用 ...
- 【思路】Aizu - 1367 - Rearranging a Sequence
给你一个1~n排好的数组,每次提一个数到最前面,问你最后形成的序列. 就把他的输入顺序倒过来输出即可.没出现过的再按原序输出. #include<cstdio> using namespa ...
- http请求 url 传递参数(特殊字符)解决方法
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.下表中列出了一些URL特殊符号及编码 十六进制值 1. + URL 中+号表示空格 %2B ...
- [Andrew Stankevich's Contest#21] Lempel-Ziv Compression
Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Special Judge ...
- redis源码解析之内存管理
zmalloc.h的内容如下: void *zmalloc(size_t size); void *zcalloc(size_t size); void *zrealloc(void *ptr, si ...
- Generator函数(一)
Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同.对于这个函数有多种理解.从语法上来理解,可以将它理解成一个状态机,封装了多个内部状态.内部的不同状态是通过yiel ...
- subline text 工具快捷键说明
编辑 ctrl + enter 光标当前行下一行新增一行,并且光标跳到下一行进行编辑 ctrl + shift +enter 光标当前行上一行新增一行,并且光标跳到上一行进行编辑 ...
- 【mybatis】分别按照 天 月 年 统计查询
页面统计想通过 天 月 年 分别来展示统计效果, 那么查询SQL拼接如下: select *, <if test="groupType == 1"> DATE_FORM ...