VBA学习笔记之工作簿

Workbook工作簿的常用功能:

1. 新建工作簿

 


 
  1. Dim wb As Workbook  
  2. Application.SheetsInNewWorkbook = 1     '设置初始工作簿中的工作表数  
  3. Set wb = Application.WorkBooks.Add  
  4. wb.Worksheets(1).name = "表1"                '给第一个工作表设置名称  
  5. Application.SheetsInNewWorkbook = 3  


2.用Excel对话框打开Excel文件

 

 


 
  1. Dim fileInfo As String  
  2. fileInfo = Application.GetOpenFilename("Excel 工作簿(*.xlsx), *.xlsx")  
  3. MsgBox fileInfo  


如果用户选择了一个Excel文件,则fileInfo为该文件的全路径。若未选择,则fileInfo为False

 

3. 备份(另存为)Excel文件

 

 
  1. Dim wb As Workbook  
  2. Set wb = Application.WorkBooks(1)     '原文件名为vba.xlsx  
  3. wb.Activate  
  4. wb.SaveCopyAs wb.path & "\" & "Bak_" & wb.name    '备份文件名为Bak_vba.xlsx  


4. 用Excel对话框保存Excel文件

 

 


 
  1. Dim fileInfo As String  
  2. fileInfo = Application.GetSaveAsFilename("excelFile", "Excel 工作簿(*.xlsm),*.xlsm")  
  3. If Not fileInfo = "False" Then  
  4.     ActiveWorkbook.SaveAs Filename:=fileInfo  
  5. End If  
  6.     MsgBox "文件未保存"  
  7. Else  


5. 设置工作簿的大小(并非Excel窗口的大小)虽然使用的是Application的属性ActiveWindow,但该属性对应的却是一个Workbook窗口

 

 


 
  1. Dim win As Window  
  2. Dim winState As Long  
  3. Dim winWidth As Double  
  4. Dim winHeight As Double  
  5.   
  6. Set win = Application.ActiveWindow  
  7. win.Activate  
  8. With win  
  9.     .WindowState = xlMinimized           '最小化工作簿,但是Excel程序窗口没有最小化  
  10. End With  
  11. With win  
  12.     winState = .WindowState  
  13.     winWidth = .Width  
  14.     winHeight = .Height  
  15. End With  
  16.       
  17. Debug.Print "WinState: " & winState  
  18. Debug.Print "WinWidth: " & winWidth  
  19. Debug.Print "WinHeight: " & winHeight  


6. 冻结窗格。和上述一样依然使用Application.ActiveWindow来操作工作簿

 

 


 
  1. Dim win As Window  
  2. Set win = Application.ActiveWindow  
  3. With win  
  4.     .Split = True  
  5.     .SplitColumn = 1         '若设置为0,表示不冻结列  
  6.     .SplitRow = 3  
  7.     .FreezePanes = True     '如果不设置FreezePanes将会在工作表中出现粗分割线  
  8. End With  

 

7. 修改工作簿文件名

 


 
  1. Dim fileName As String  
  2. fileName = "C:\book.xlsx"           '文件不存在会报错  
  3. Name fileName As "C:\book1.xlsx"    '工作簿应处于关闭状态,而且路径应当一致  
  4. Debug.Print "Renamed OK!"  

 

Workbook主要事件:

Workbook事件比起之前的Application事件写起来方便些。我们直接使用ThisWorkbook对象的事件(也是一个Workbook对象)

如下图,双击ThisWorkbook,在右侧的代码区上方直接选择需要实现的事件,然后在自动生成的事件函数中编写代码

1.BeforeClose事件

 


 
  1. Private Sub Workbook_BeforeClose(Cancel As Boolean)  
  2.     MsgBox "关不掉了"  
  3.     Cancel = True  
  4. End Sub  

该事件在关闭工作簿前触发

 

2.BeforeSave事件

 

 
  1. Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
  2.     If Not SaveAsUI Then  
  3.         MsgBox "保存不了了"  
  4.         Cancel = True  
  5.     End If  
  6. End Sub  


在单击保存按钮或者Ctrl+S时触发

 

3.WindowActive事件

  1. Private Sub Workbook_WindowActivate(ByVal Wn As Window)  
  2.     MsgBox "激活工作簿"  
  3.     Wn.width = 100  
  4. End Sub  

 

转载于:https://www.cnblogs.com/gilgamesh-hjb/p/7295197.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
rivate Sub Command3_Click() Dim i As Long Dim j As Long Dim objExl As Excel.Application '声明对象变量 Me.MousePointer = 11 '改变鼠标样式 Set objExl = New Excel.Application '初始化对象变量 objExl.SheetsInNewWorkbook = 1 '将新建的工作数量设为1 objExl.Workbooks.Add '增加一个工作 objExl.Sheets(objExl.Sheets.Count).Name = "book1" '修改工作名称 objExl.Sheets.Add , objExl.Sheets("book1") '增加第二个工作在第一个之后 objExl.Sheets(objExl.Sheets.Count).Name = "book2" objExl.Sheets.Add , objExl.Sheets("book2") '增加第三个工作在第二个之后 objExl.Sheets(objExl.Sheets.Count).Name = "book3" objExl.Sheets("book1").Select '选中工作 For i = 1 To 50 '循环写入数据 For j = 1 To 5 If i = 1 Then objExl.Selection.NumberFormatLocal = "@" '设置格式为文本 objExl.Cells(i, j) = " E " & i & j Else objExl.Cells(i, j) = i & j End If Next Next objExl.Rows("1:1").Select '选中第一行 objExl.Selection.Font.Bold = True '设为粗体 objExl.Selection.Font.Size = 24 '设置字体大小 objExl.Cells.EntireColumn.AutoFit '自动调整列宽 objExl.ActiveWindow.SplitRow = 1 '拆分第一行 objExl.ActiveWindow.SplitColumn = 0 '拆分列 objExl.ActiveWindow.FreezePanes = True '固定拆分 objExl.ActiveSheet.PageSetup.PrintTitleRows = "$1:$1" '设置打印固定行 objExl.ActiveSheet.PageSetup.PrintTitleColumns = "" '打印标题 objExl.ActiveSheet.PageSetup.RightFooter = "打印时间: " & _ Format(Now, "yyyy年mm月dd日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值