快捷搜索:  汽车  科技

vba所有的工作簿及工作表(使用工作簿对象Workbook操作和管理工作簿)

vba所有的工作簿及工作表(使用工作簿对象Workbook操作和管理工作簿)Set NewBook = Workbooks.Addn = Workbooks.CountWorkbooks.AddEnd SubSub AddNew() '增加工作簿

一个工作簿对象(Workbook)就是一个Excel文件,多个Workbook对象组成Workbooks集合。

1 用Workbooks集合管理工作簿

对工作簿集合的操作包括新建、打开和保存工作簿等。

vba所有的工作簿及工作表(使用工作簿对象Workbook操作和管理工作簿)(1)

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-

猜您喜欢: