ExcelVBA±àʵս±à³Ì(ºÜʵÓÃŶ) ÏÂÔØ±¾ÎÄ

ÒªÇóÊäÈëÃÜÂë¡£

ʾÀý03-21£º·µ»Ø¹¤×÷²¾Óû§×´Ì¬ÐÅÏ¢(UserStatusÊôÐÔ) Sub UsePassword()

Dim Users As Variant Dim Row As Long

Users = ActiveWorkbook.UserStatus Row = 1

With Workbooks.Add.Sheets(1) .Cells(Row, 1) = \Óû§Ãû\

.Cells(Row, 2) = \ÈÕÆÚºÍʱ¼ä\ .Cells(Row, 3) = \ʹÓ÷½Ê½\

For Row = 1 To UBound(Users, 1) .Cells(Row + 1, 1) = Users(Row, 1) .Cells(Row + 1, 2) = Users(Row, 2) Select Case Users(Row, 3) Case 1

.Cells(Row + 1, 3).Value = \¸öÈ˹¤×÷²¾\ Case 2

.Cells(Row + 1, 3).Value = \¹²Ïí¹¤×÷²¾\ End Select Next End With

Range(\End Sub ʾÀý˵Ã÷£ºÊ¾Àý´úÂëÔËÐк󣬽«´´½¨Ò»¸öй¤×÷²¾²¢´øÓÐÓû§Ê¹Óõ±Ç°¹¤×÷²¾µÄÐÅÏ¢£¬¼´Óû§Ãû¡¢´ò¿ªµÄÈÕÆÚºÍʱ¼ä¼°¹¤×÷²¾Ê¹Ó÷½Ê½¡£

ʾÀý03-22£º¼ì²é¹¤×÷²¾ÊÇ·ñÓÐÃÜÂë±£»¤(HasPasswordÊôÐÔ) Sub IsPassword()

If ActiveWorkbook.HasPassword = True Then

MsgBox \±¾¹¤×÷²¾ÓÐÃÜÂë±£»¤,ÇëÔÚ¹ÜÀíÔ±´¦»ñÈ¡ÃÜÂë.\ Else

MsgBox \±¾¹¤×÷²¾ÎÞÃÜÂë±£»¤,Äú¿ÉÒÔ×ÔÓɱ༭.\ End If End Sub

ʾÀý03-23£º¾ö¶¨Áбí±ß¿òÊÇ·ñ¿É¼û(InactiveListBorderVisibleÊôÐÔ) Sub HideListBorders()

MsgBox \Òþ²Øµ±Ç°¹¤×÷²¾ÖÐËùÓзǻÁбíµÄ±ß¿ò.\ ActiveWorkbook.InactiveListBorderVisible = False End Sub

37

ʾÀý03-24£º¹Ø±Õ¹¤×÷²¾ [ʾÀý03-24-01]

Sub CloseWorkbook1()

Msgbox ¡°²»±£´æËù×÷µÄ¸Ä±ä¶ø¹Ø±Õ±¾¹¤×÷²¾¡± ActiveWorkbook.Close False

¡®»òActiveWorkbook.Close SaveChanges:=False ¡®»òActiveWorkbook.Saved=True End sub

[ʾÀý03-24-02]

Sub CloseWorkbook2()

Msgbox ¡°±£´æËù×÷µÄ¸Ä±ä²¢¹Ø±Õ±¾¹¤×÷²¾¡± ActiveWorkbook.Close True End sub

[ʾÀý03-24-03]

Sub CloseWorkbook3()

Msgbox ¡°¹Ø±Õ±¾¹¤×÷²¾¡£Èç¹û¹¤×÷²¾ÒÑ·¢Éú±ä»¯£¬Ôòµ¯³öÊÇ·ñ±£´æ¸ü¸ÄµÄ¶Ô»°¿ò¡£¡±

ActiveWorkbook.Close True End sub

[ʾÀý03-24-04] ¹Ø±Õ²¢±£´æËùÓй¤×÷²¾ Sub CloseAllWorkbooks() Dim Book As Workbook

For Each Book In Workbooks

If Book.Name<>ThisWorkbook.Name Then Book.Close savechanges:=True End If Next Book

ThisWorkbook.Close savechanges:=True End Sub

[ʾÀý03-24-05] ¹Ø±Õ¹¤×÷²¾²¢½«Ëü³¹µ×ɾ³ý Sub KillMe()

With ThisWorkbook .Saved = True

.ChangeFileAccess Mode:=xlReadOnly Kill .FullName .Close False End With End Sub

[ʾÀý03-24-06]¹Ø±ÕËùÓй¤×÷²¾£¬Èô¹¤×÷²¾ÒѸıäÔòµ¯³öÊÇ·ñ±£´æ±ä»¯µÄ¶Ô»°¿ò

Sub closeAllWorkbook()

MsgBox \¹Ø±Õµ±Ç°Ëù´ò¿ªµÄËùÓй¤×÷²¾\ Workbooks.Close End Sub

38

µÚÈýÕ ¹¤×÷²¾(Workbook)»ù±¾²Ù×÷Ó¦ÓÃʾÀý(¶þ)

·ÖÀà:ExcelVBA>>ExcelVBA±à³ÌÈëÃÅ·¶Àý

<ÆäËüһЩÓйزÙ×÷¹¤×÷²¾µÄʾÀý> ʾÀý03-25£º´´½¨ÐµĹ¤×÷²¾ Sub testNewWorkbook()

MsgBox \´´½¨Ò»¸ö´øÓÐ10¸ö¹¤×÷±íµÄй¤×÷²¾\Dim wb as Workbook

Set wb = NewWorkbook(10) End Sub

¡®- - - - - - - - - - - - - - - - - - - - - - - Function NewWorkbook(wsCount As Integer) As Workbook

'´´½¨´øÓÐÓɱäÁ¿wsCountÌᶨÊýÁ¿¹¤×÷±íµÄ¹¤×÷²¾£¬¹¤×÷±íÊýÔÚ1ÖÁ255Ö®¼ä Dim OriginalWorksheetCount As Long Set NewWorkbook = Nothing

If wsCount < 1 Or wsCount > 255 Then Exit Function

OriginalWorksheetCount = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = wsCount Set NewWorkbook = Workbooks.Add

Application.SheetsInNewWorkbook = OriginalWorksheetCount End Function

ʾÀý˵Ã÷£º×Ô¶¨Ò庯ÊýNewWorkbook¿ÉÒÔ´´½¨×î¶à´øÓÐ255¸ö¹¤×÷±íµÄ¹¤×÷²¾¡£±¾²âÊÔʾÀý´´½¨Ò»¸ö´øÓÐ10¸ö¹¤×÷±íµÄй¤×÷²¾¡£

ʾÀý03-26£ºÅжϹ¤×÷²¾ÊÇ·ñ´æÔÚ Sub testFileExists()

MsgBox \Èç¹ûÎļþ²»´æÔÚÔòÓÃÐÅÏ¢¿ò˵Ã÷,·ñÔò´ò¿ª¸ÃÎļþ.\ If Not FileExists(\Îļþ¼Ð\\×ÓÎļþ¼Ð\\Îļþ.xls\ MsgBox \Õâ¸ö¹¤×÷²¾²»´æÔÚ!\ Else

Workbooks.Open \Îļþ¼Ð\\×ÓÎļþ¼Ð\\Îļþ.xls\ End If End Sub

¡®- - - - - - - - - - - - - - - - - - - - - - -

Function FileExists(FullFileName As String) As Boolean 'Èç¹û¹¤×÷²¾´æÔÚ,Ôò·µ»ØTrue

FileExists = Len(Dir(FullFileName)) > 0 End Function

ʾÀý˵Ã÷£º±¾Ê¾ÀýʹÓÃ×Ô¶¨Ò庯ÊýFileExistsÅжϹ¤×÷²¾ÊÇ·ñ´æÔÚ£¬Èô¸Ã¹¤×÷²¾ÒÑ´æÔÚ£¬Ôò´ò¿ªËü¡£´úÂëÖУ¬¡°C:\\Îļþ¼Ð\\×ÓÎļþ¼Ð\\Îļþ.xls¡±´ú±í¹¤×÷²¾ËùÔÚµÄÎļþ¼ÐÃû¡¢×ÓÎļþ¼ÐÃûºÍ¹¤×÷²¾ÎļþÃû¡£

ʾÀý03-27£ºÅжϹ¤×÷²¾ÊÇ·ñÒÑ´ò¿ª

39

[ʾÀý03-27-01]

Sub testWorkbookOpen()

MsgBox \Èç¹û¹¤×÷²¾Î´´ò¿ª,Ôò´ò¿ª¸Ã¹¤×÷²¾.\ If Not WorkbookOpen(\¹¤×÷²¾Ãû.xls\ Workbooks.Open \¹¤×÷²¾Ãû.xls\ End If End Sub

¡®- - - - - - - - - - - - - - - - - - - - - - -

Function WorkbookOpen(WorkBookName As String) As Boolean 'Èç¹û¸Ã¹¤×÷²¾ÒÑ´ò¿ªÔò·µ»ØÕæ WorkbookOpen = False

On Error GoTo WorkBookNotOpen

If Len(Application.Workbooks(WorkBookName).Name) > 0 Then WorkbookOpen = True MsgBox \¸Ã¹¤×÷²¾ÒÑ´ò¿ª\ Exit Function End If

WorkBookNotOpen: End Function

ʾÀý˵Ã÷£º±¾Ê¾ÀýÖеĺ¯ÊýWorkbookOpenÓÃÀ´ÅжϹ¤×÷²¾ÊÇ·ñ´ò¿ª¡£´úÂëÖУ¬¡°¹¤×÷²¾Ãû.xls¡±´ú±íËùÒª´ò¿ªµÄ¹¤×÷²¾Ãû³Æ¡£ [ʾÀý03-27-02]

Sub testWookbookIFOpen() Dim wb As String Dim bwb As Boolean

wb = \ÒªÅжϵŤ×÷²¾Ãû³Æ>\ bwb = WorkbookIsOpen(wb) If bwb = True Then

MsgBox \¹¤×÷²¾\ÒÑ´ò¿ª.\ Else

MsgBox \¹¤×÷²¾\δ´ò¿ª.\ End If End Sub

¡®- - - - - - - - - - - - - - - - - - - - - - - Private Function WorkbookIsOpen(wbname) As Boolean Dim x As Workbook On Error Resume Next

Set x = Workbooks(wbname) If Err = 0 Then

WorkbookIsOpen = True Else

WorkbookIsOpen = False End If

End Function

40