VBA 技巧二
Public Sub 技巧()'保存并关闭工作薄 Dim wb As Workbook Set wb = ThisWorkbook '可指定任意工作簿 wb.Close savechanges:=False Set wb = Nothing End Sub
Public Sub 技巧()'查询指定工作薄 Dim i As Integer, j As Integer Dim wb As Workbook For i = 1 To Workbooks.Count For j = 1 To Workbooks(i).Worksheets.Count If Workbooks(i).Worksheets(j).Name = "hhh" Then Set wb = Workbooks(i) GoTo kkk End If Next j Next i MsgBox "没有找到存在有该工作表的工作簿!" Exit Sub kkk: MsgBox "指定工作表的工作簿名称为:" & wb.Name Set wb = Nothing End Sub
Public Sub 技巧()’创建多个窗口且并排显示 Dim i As Integer Dim wd As Window Set wd = ActiveWindow '创建3个新窗口 wd.NewWindow wd.NewWindow wd.NewWindow Windows.Arrange Arrangestyle:=xlArrangeStyleTiled '平铺窗口 MsgBox "已经创建了3个新窗口。下面将关闭这3个新窗口,并恢复原窗口。" For i = 1 To Windows.Count - 1 Windows(Windows.Count - 1).Close Next i ActiveWindow.WindowState = xlMaximized End Sub
Public Sub 技巧()‘新建窗口并排显示 Dim wd As Window Set wd = ActiveWindow wd.NewWindow Windows.Arrange Arrangestyle:=xlArrangeStyleVertical MsgBox "下面将关闭新建窗口,并恢复原窗口大小." wd.Close ActiveWindow.WindowState = xlMaximized Set wd = Nothing End Sub
Public Sub 技巧()’返回当前运行宏的文件所在路径 Dim wb As Workbook Set wb = ThisWorkbook MsgBox "当前宏代码运行的工作簿路径为:" & wb.Path Set wb = Nothing End Sub
Public Sub 技巧()‘获取工作薄的打开方式 Dim wb As Workbook Set wb = Workbooks(1) '指定任意的工作簿 If wb.ReadOnly = True Then MsgBox "工作簿以只读方式打开!" Else MsgBox "工作簿以普通方式打开!" End If Set wb = Nothing End Sub
Public Sub 技巧()’获取工作薄文件名 Dim wb As Workbook Dim i As Integer Dim myBaseName As String Set wb = ThisWorkbook '指定任意工作簿 myBaseName = wb.Name i = InStrRev(myBaseName, ".") If i > 0 Then myBaseName = Left(myBaseName, i - 1) MsgBox "本工作簿的基本名称:" & myBaseName End Sub
Public Sub 技巧()‘获取工作薄的所有信息 Dim wb As Workbook Dim myProperties As DocumentProperty Columns("A:B").Clear Set wb = ThisWorkbook '可以指定任意的工作簿 Range("A1:B1").Value = Array("信息名称", "信息数据") For Each myProperties In wb.BuiltinDocumentProperties With Range("A65536").End(xlUp).Offset(1) .Value = myProperties.Name On Error Resume Next .Offset(, 1).Value = myProperties.Value On Error GoTo 0 End With Next Columns.AutoFit Set wb = Nothing End Sub
Public Sub 技巧()’判断窗口冻结位置 Dim wb As Workbook Dim wd As Window Set wb = Workbooks(1) '可以指定任意的工作簿 Set wd = wb.Windows(1) '可以指定该工作簿的任意窗口 With wd MsgBox "窗格是否被冻结:" & .FreezePanes MsgBox "窗格数目:" & .Panes.Count MsgBox "窗格中左上角可见单元格区域地址:" & .Panes(1).VisibleRange.Address End With Set wd = Nothing Set wb = Nothing End Sub
Public Sub 技巧()‘判断工作薄是否打开,如果打开就激活该工作簿 Dim wb As Workbook Dim myFileName As String myFileName = Application.GetOpenFilename("Excel工作簿(*.xls),*.xls") If myFileName = "False" Then MsgBox "没有选择工作簿" Exit Sub End If On Error Resume Next Set wb = Workbooks(Dir(myFileName)) On Error GoTo 0 If wb Is Nothing Then '如果该工作簿还没有打开,就打开它 Workbooks.Open Filename:=myFileName Else If wb.FullName = myFileName Then '如果该工作簿已经被打开,就激活它 MsgBox "您所指定的工作簿已经被打开!" wb.Activate End If End If Set wb = Nothing End Sub