vba所有的工作簿及工作表(使用工作簿对象Workbook操作和管理工作簿)
vba所有的工作簿及工作表(使用工作簿对象Workbook操作和管理工作簿)Set NewBook = Workbooks.Addn = Workbooks.CountWorkbooks.AddEnd SubSub AddNew() '增加工作簿
一个工作簿对象(Workbook)就是一个Excel文件,多个Workbook对象组成Workbooks集合。
对工作簿集合的操作包括新建、打开和保存工作簿等。
1.1 用Add方法新建工作簿
Sub AddWorkbook() '增加工作簿
Workbooks.Add
End Sub
Sub AddNew() '增加工作簿
n = Workbooks.Count
Set NewBook = Workbooks.Add
With NewBook
.Title = "新工作簿" & n
2.1 用Save方法保存工作簿
Sub 保存新建工作簿()
Dim wb1 As Workbook
For Each wb1 In Workbooks
If wb1.Path <> "" Then wb1.Save
Next
End Sub
2.2 用Saveas方法另存工作簿
Sub Fsaveas()Set newbook = Workbooks.Add
Do
fName = Application.GetSaveAsFilename
Loop Until fName <> False
newbook.saveas Filename:=fName
End Sub
2.3 用Password属性设置工作簿密码
Sub 设置密码()
ActiveWorkbook.Password = InputBox("输入密码:")
Application.DisplayAlerts = False
ActiveWorkbook.Close True
Application.DisplayAlerts = True
End Sub
Sub 取消密码()
ActiveWorkbook.Password = ""
End Sub
2.4 用DocumentProperties集合获取文档属性
Sub 文档属性()
Dim r As Integer
Worksheets(1).Activate
Cells(1 1) = "名称"
Cells(1 2) = "类型"
Cells(1 3) = "值"
Range("A1:C1").Font.Bold = True
With ActiveWorkbook
For r = 1 To .BuiltinDocumentProperties.Count
With .BuiltinDocumentProperties(r)
Cells(r 1 1) = .Name
Select Case .Type
Case msoPropertyTypeBoolean
Cells(r 1 2) = "Boolean"
Case msoPropertyTypeDate
Cells(r 1 2) = "Date"
Case msoPropertyTypeFloat
Cells(r 1 2) = "Float"
Case msoPropertyTypeNumber
Cells(r 1 2) = "Number"
Case msoPropertyTypeString
Cells(r 1 2) = "string"
End Select
On Error Resume Next
Cells(r 1 3) = .Value
On Error GoTo 0
End With
Next r
End With
Range("A:C").Columns.AutoFit
End Sub
2.5 用FullName属性处理工作簿文件名
Sub 获取文件名()
MsgBox "当前工作簿名称为:" & ActiveWorkbook.Name & vbNewLine & _
"当前工作簿全路径名为:" & ActiveWorkbook.FullName
End Sub
3 在工作簿上与用户交互工作簿事件的代码保存在“ThisWorkbook”对象(左边的工程对象窗口)中。
3.1 用Open事件打开关联工作簿
Private Sub Workbook_Open()
Workbooks.Open (ThisWorkbook.Path & "\关联工作簿.xlsm")
End Sub
3.2 用CellDragAndDrop属性禁止拖动单元格
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CellDragAndDrop = True
End Sub
3.3 用BeforeClose事件强制保存工作簿
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then Me.Save
End Sub
3.4 用BeforePrint事件限制打印
Private Sub Workbook_BeforePrint(Cancel As Boolean)
MsgBox "本工作簿的内容不允许打印!" vbCritical vbOKOnly
Cancel = True
End Sub
-End-