【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 ...
随机推荐
- 安装zabbix监控系统
环境 操作系统 最小化安装CentOS Linux release 7.2.1511 IP 192.168.88.1 zabbix版本 zabbix-3.4.4.tar.gz zabbix依赖于LNM ...
- 31、Flask实战第31天:cms后台修改密码
cms后台修改密码界面布局 先创建cms_resetpwd.html页面,继承cms_base.html {% extends 'cms/cms_base.html' %} {% block titl ...
- C++中的error C2662,const的this指针问题
今天在写C++代码的时候遇到一个错误,涉及到了常量的this指针的问题. 简化后的代码如下: #include <iostream> #include <string> usi ...
- 【贪心】Codeforces Round #407 (Div. 2) A. Anastasia and pebbles
贪心地一个一个尽可能往口袋里放,容易发现和顺序无关. #include<cstdio> #include<iostream> using namespace std; type ...
- 【FFT】HDU4609-3 idiots
..退化为一天两题了,药丸.. [题目大意] 给出n根木棍的长度,求从其中取出3根能组成三角形的概率. [思路] 然后枚举求前缀和,枚举最长边.假设最长边为l,先求出所有两边之和大于它的情况数.然后减 ...
- [原创]Java中字符串、数组、集合及JSONArray的长度属性
前言:数组没有length()这个方法,有length的属性.String有有length()这个方法. 1.String字符串 String str = "abcdefg";st ...
- WPF中的动画——(二)From/To/By 动画
我们所实现的的动画中,很大一部分是让一个属性在起始值和结束值之间变化,例如,我在前文中实现的改变宽度的动画: var widthAnimation = new DoubleAnimation() ...
- HDU 4643 GSM (2013多校5 1001题 计算几何)
GSM Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...
- Nginx" upstream prematurely closed connection while reading response header from upstream"问题排查
问题背景 我们这边是一个基于Nginx的API网关(以下标记为A),最近两天有调用方反馈,偶尔会出现502错误,我们从Nginx的error日志里看,就会发现有" upstream prem ...
- 查看SQLServer的QUOTED_IDENTIFIER等配置
DBCC USEROPTIONS SELECT SESSIONPROPERTY('QUOTED_IDENTIFIER') quotedidentifier SELECT SESSIONPROPERTY ...