【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 ...
随机推荐
- 永久修改IP地址
第一种方法:使用nmtui文本框的方式修改IP 在命令行中输入nmtui,回车<Enter>会出现下图(英文的请自己对照,有点丑) 选择编辑 进入到如下界面,需要配置IPv4地址,要将IP ...
- Server SQL 2008 练习
一.修改数据库 (1)给db_temp数据库添加一个数据文件文件db_temp1指定大小为5MB,最大文件大小为100mb,自动递增大小为1MB,存储路径为d:\. 利用系统存储过程sp_helpdb ...
- 破解 apk
韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha 313134555@qq.com 使用 ida pro 直接分析 apk . 有些代码 混淆 处理过, 就需要 动态调试 辅助 ...
- [Codeforces #211] Tutorial
Link: Codeforces #211 传送门 一套非常简单的题目,但很多细节都是错了一次才能发现啊…… 还是不能养成OJ依赖症,交之前先多想想corner case!!! A: 模拟,要特判0啊 ...
- BZOJ 1828 [Usaco2010 Mar]balloc 农场分配(贪心+线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1828 [题目大意] 现在有一些线段[l,r]的需求需要满足,i位置最多允许a[i]条线 ...
- AIM Tech Round (Div. 1) D. Birthday 数学 暴力
D. Birthday 题目连接: http://www.codeforces.com/contest/623/problem/D Description A MIPT student named M ...
- RACLE 错误 12899 处理, oracle 11g 更改字符集
工作需要,安装装了oracle 11g,在导入其他机器上的备份数据的时间,发生一个错误: IMP-00019: 由于 ORACLE 错误 12899 而拒绝行IMP-00003: 遇到 ORACLE ...
- springBoot单元测试-基础单元测试
1)在pom文件中加入junit支持 <!-- spring-boot-starter-test 单元测试 --> <dependency> <groupId>or ...
- 解决Hue/hiveserver2报错:java.io.IOException: Job status not available
sql是:select count(distinct col) from db.table; 排查过程中遇到过几个不同的报错: 1. beeline -u jdbc:hive2://0.0.0.0:1 ...
- [Android Pro] ListView,GridView之LayoutAnimation特殊动画的实现
转载自:http://gundumw100.iteye.com/blog/1874545 LayoutAnimation干嘛用的?不知道的话网上搜一下. Android的Animation之Layou ...