Access������--
ËùÊô·ÖÀࣺ ¾«Ñ¡½Ì³Ì ×÷Õߣº ¹²ïí ¸üÐÂÈÕÆÚ£º2003-10-17 19:51:34 ÔĶÁ´ÎÊý£º380

¶Ô Microsoft Office ÃüÁîÀ¸½øÐиü¶à±à³Ì


¡ñMicrosoft Outlook® ÈçºÎÒÔ±à³Ì·½Ê½´¦ÀíÃüÁîÀ¸¡£
¡ñÈçºÎÏòÃüÁîÀ¸°´Å¥ÖÐÌí¼Ó×Ô¶¨ÒåͼÏñ¡£
¡ñÈçºÎÏòÃüÁîÀ¸ÖÐÌí¼Ó×éºÏ¿ò¡£
¡ñÈçºÎ½ûÓúÍÒþ²ØÃüÁîÀ¸ÒÔ¼°ÃüÁîÀ¸¿Ø¼þ¡£
¡ñÈçºÎ¶¨Î»ÃüÁîÀ¸¡£
¡ñÈçºÎ¶¯Ì¬Ìí¼ÓºÍɾ³ýÃüÁîÀ¸¡£
¡ñÈçºÎÔÚ¸ø¶¨µÄ Office Ó¦ÓóÌÐòÖÐÁгöÃüÁîÀ¸ºÍÃüÁîÀ¸¿Ø¼þµÄͨÓÃÊôÐÔ¡£

ÃüÁîÀ¸ºÍ Outlook ¶ÔÏóÄ£ÐÍ
ÔÚÉϸöÔµÄרÀ¸ÖУ¬ÎÒÍüÁ˸æËßÄú Microsoft Outlook ¶ÔÏóÄ£ÐÍ·ÃÎÊÃüÁîÀ¸ºÍÃüÁîÀ¸¿Ø¼þµÄ·½Ê½ÓëÆäËû Microsoft Office Ó¦ÓóÌÐòÂÔÓв»Í¬¡£

ÔÚ³ý Outlook ÒÔÍâµÄÓ¦ÓóÌÐòÖУ¬Äú¿ÉÒÔʹÓÃÈçÏÂËùʾµÄ´úÂë·ÃÎÊÃüÁîÀ¸£º

Public Sub ListCommandBarNames()

ÓÃ;£ºÁгöµ±Ç°Ó¦ÓóÌÐòµÄËùÓÐÃüÁîÀ¸Ãû³Æ¡£
×¢Ò⣺´Ë´úÂë¶Ô Outlook ÎÞЧ£¡

Dim objCommandBar As Office.CommandBar

For Each objCommandBar In Application.CommandBars

Debug.Print objCommandBar.Name

Next objCommandBar

End Sub

È»¶ø£¬³¢ÊÔÔÚ Outlook ÖÐÔËÐд˴úÂ뽫µ¼ÖÂÔËÐÐʱ´íÎó¡£Ïà·´£¬Äú±ØÐëʹÓà Explorer »ò Inspector ¶ÔÏóµÄ CommandBars ÊôÐÔ£¬ÈçÏÂËùʾ£º

Public Sub ListOutlookExplorerCommandBarNames()

ÓÃ;£ºÁгöµ±Ç°×ÊÔ´¹ÜÀíÆ÷µÄËùÓÐÃüÁîÀ¸Ãû³Æ¡£
×¢Ò⣺´Ë´úÂëÖ»¶Ô Outlook ÓÐЧ£¡

Dim objCommandBar As Office.CommandBar

For Each objCommandBar In Application.ActiveExplorer.CommandBars

Debug.Print objCommandBar.Name

Next objCommandBar

End Sub

ÔÚÇ°ÃæµÄ´úÂëʾÀýÖУ¬½«´úÂë ActiveExplorer Ì滻Ϊ ActiveInspector ¿É´òÓ¡»î¶¯¼ì²éÆ÷µÄËùÓÐÃüÁîÀ¸Ãû³Æ¡£¶ÔÓÚÄÇЩ²»ÊìϤ Outlook ¶ÔÏóÄ£Ð͵ÄÓû§£¬¡°ä¯ÀÀÆ÷¡±±íʾ Outlook Óû§½çÃæ¡£¡°¼ì²éÆ÷¡±±íʾһ¸ö´°¿Ú£¬Ëü°üº¬Ìض¨µÄ Outlook ÏÈçµç×ÓÓʼþÐÅÏ¢»òÁªÏµÈË£©ÒÔ¼° Outlook ÏîÖеÄÈκÎÑ¡Ïҳ£¨ÈçÈÎÎñÏîÖеġ°ÏêϸÐÅÏ¢¡±Ñ¡Ï£©¡£

ÏòÃüÁîÀ¸°´Å¥ÖÐÌí¼Ó×Ô¶¨ÒåͼÏñ
¾¡¹Ü¿ÉÒÔʹÓà CommandBarButton ¶ÔÏóµÄ FaceId ÊôÐÔ½«ÃüÁîÀ¸°´Å¥µÄͼÏñÉèÖÃΪ Office ÌṩµÄÄÚÖÃͼÏñ£¬µ«Äú¿ÉÒÔʹÓà CommandBarButton ¶ÔÏóµÄ Picture ÊôÐÔÌṩÄú´´½¨µÄͼÏñ£¬Ò²¿ÉÒÔʹÓà CommandBarButton ¶ÔÏóµÄ Mask ÊôÐÔ´´½¨×Ô¶¨Òå͸Ã÷ͼÏñ¡£

¾¡¹ÜÔÚ Web µÄ¹²ïíÈí¼þºÍÃâ·ÑÈí¼þÕ¾µãÉÏÓкܶà¿ÉÓõÄͼÏñ±à¼­Æ÷£¬ÒÔ¼° Microsoft Visual C++® ÕâÑùµÄ¹¤¾ß£¬µ«ÊÇÒª´´½¨ÕâЩͼÏñ£¬Ê¹Óà Microsoft »­Í¼¾Í×ã¹»ÁË¡£ÒªÊ¹Óû­Í¼´´½¨ÕâЩͼÏñ£º

ÔÚ¡°¿ªÊ¼¡±²Ëµ¥ÉÏ£¬Ö¸Ïò¡°³ÌÐò¡±£¬Ö¸Ïò¡°¸½¼þ¡±£¬È»ºóµ¥»÷¡°»­Í¼¡±¡£
ÔÚ¡°Í¼Ïñ¡±²Ëµ¥ÉÏ£¬µ¥»÷¡°ÊôÐÔ¡±¡£
ÔÚ¡°¿í¶È¡±¿òÖУ¬¼üÈë¡°16¡±¡£ÔÚ¡°¸ß¶È¡±¿òÖУ¬¼üÈë¡°16¡±¡£È·±£Ñ¡ÖС°ÏñËØ¡±ºÍ¡°²ÊÉ«¡±Ñ¡ÏȻºóµ¥»÷¡°È·¶¨¡±¡£
ÔÚ¡°²é¿´¡±²Ëµ¥ÉÏ£¬Ö¸Ïò¡°Ëõ·Å¡±£¬È»ºóµ¥»÷¡°×Ô¶¨Ò塱¡£
µ¥»÷¡°800%¡±Ñ¡ÏȻºóµ¥»÷¡°È·¶¨¡±¡£
ÔÚ¡°²é¿´¡±²Ëµ¥ÉÏ£¬Ö¸Ïò¡°Ëõ·Å¡±£¬È»ºóµ¥»÷¡°ÏÔʾÍø¸ñ¡±¡£
ÔÚ¡°²é¿´¡±²Ëµ¥ÉÏ£¬È·±£Ñ¡ÖС°¹¤¾ßÏ䡱ºÍ¡°ÑÕÁϺС±ÃüÁî¡£
ʹÓá°¹¤¾ßÏ䡱ºÍ¡°ÑÕÁϺС±¿Ø¼þ´´½¨Í¼Ïñ¡£
´´½¨ÍêͼÏñÖ®ºó£¬ÔÚ¡°Îļþ¡±²Ëµ¥ÉÏ£¬µ¥»÷¡°±£´æ¡±¡£
½«Í¼±ê±£´æΪ¡°256 ɫλͼ¡±¡£
ÏÂÃæÊÇÎÒ´´½¨µÄͼÏñʾÀý£º

µã»÷´ò¿ªÐ´°¿Ú

ͼ 1£º×Ô¶¨ÒåµÄ²»Í¸Ã÷λͼ

Òª´´½¨Í¸Ã÷ͼÏñ£¬Äú±ØÐë´´½¨ÏàÓ¦µÄ¡°Í¼ÏñÑÚÂ롱¡£Îª´Ë£¬Çë±£´æ¸Õ¸Õ´´½¨µÄͼÏñ£¬µ«Òª¸ü¸ÄÎļþÃû¡£¶ÔÓÚÿ¸öÐèҪ͸Ã÷µÄÏñËØ£¬ÇëÓð×É«Ìî³ä¸ÃÏñËØ¡£¶ÔÓÚÿ¸öÐèÒª²»Í¸Ã÷µÄÏñËØ£¬ÇëÓúÚÉ«Ìî³ä¸ÃÏñËØ¡£È»ºóÔٴα£´æ¸ÃͼÏñ¡£ÏÂÃæÊÇÎÒ´´½¨µÄͼÏñÑÚÂëʾÀý£º

µã»÷´ò¿ªÐ´°¿Ú

ͼ 2£º×Ô¶¨ÒåλͼÑÚÂë

ÏÂÃæÊÇһЩʾÀý´úÂ룬ÏÔʾÈçºÎÏòÃüÁîÀ¸°´Å¥ÖÐÌí¼Ó͸Ã÷ͼƬ£º

Public Sub NewPictureOnNewCommandBar()

ÓÃ;£ºÏòÃüÁîÀ¸°´Å¥ÖÐÌí¼ÓͼƬ¡£

Dim objCommandBar As Office.CommandBar
Dim objCommandBarButton As Office.CommandBarButton
Dim objPicture As stdole.IPictureDisp

Èç¹û²»ÐèҪ͸Ã÷ͼÏñ£¬Ç뽫ÏÂÒ»ÐдúÂë×¢Ê͵ô¡£
Dim objMask As stdole.IPictureDisp

Const PICTURE_PATH As String = "C:\My Pictures\OK.bmp"

Èç¹û²»ÐèҪ͸Ã÷ͼÏñ£¬Ç뽫ÏÂÒ»ÐдúÂë×¢Ê͵ô¡£
Const PICTURE_MASK As String = "C:\My Pictures\OKMask.bmp"

Const COMMAND_BAR_NAME As String = "²âÊÔÃüÁîÀ¸"

½«ÏÂÒ»ÐÐÌ滻Ϊ£º
For Each objCommandBar In Application.ActiveExplorer.CommandBars <- ¶ÔÓÚ Outlook
For Each objCommandBar In Application.VBE.CommandBars <- ¶ÔÓÚ Visual Basic Editor
For Each objCommandBar In Application.CommandBars

If objCommandBar.Name = COMMAND_BAR_NAME Then

objCommandBar.Delete

End If

Next objCommandBar

Set objCommandBar = Application.CommandBars.Add(COMMAND_BAR_NAME)
Set objCommandBarButton = _
objCommandBar.Controls.Add(msoControlButton)
Set objPicture = LoadPicture(PICTURE_PATH)

Èç¹û²»ÐèҪ͸Ã÷ͼÏñ£¬Ç뽫ÏÂÒ»ÐдúÂë×¢Ê͵ô¡£
Set objMask = LoadPicture(PICTURE_MASK)

objCommandBarButton.Picture = objPicture

Èç¹û²»ÐèҪ͸Ã÷ͼÏñ£¬Ç뽫ÏÂÒ»ÐдúÂë×¢Ê͵ô¡£
objCommandBarButton.Mask = objMask

End Sub

ÈçÇ°ÃæµÄ´úÂëËùʾ£¬ÇëÔÚ´úÂëÖÐΪ²»Í¸Ã÷ͼÏñ´´½¨Ò»¸ö¶ÔÏó£¬ÎªÍ¼ÏñÑÚÂë´´½¨Ò»¸ö¶ÔÏó£»Ã¿¸ö¶ÔÏ󶼱ØÐëΪ stdole.IPictureDisp ÀàÐÍ¡£½ÓÏÂÀ´£¬Í¨¹ýµ÷ÓöÔÏóµÄ LoadPicture ·½·¨¶ÔÕâÁ½¸ö¶ÔÏó·Ö±ð½øÐгõʼ»¯¡£×îºó£¬½«ÃüÁîÀ¸°´Å¥¶ÔÏóµÄ Picture ÊôÐÔÉèÖÃΪ²»Í¸Ã÷ͼÏñ¶ÔÏ󣬽«ÃüÁîÀ¸°´Å¥¶ÔÏóµÄ Mask ÊôÐÔÉèÖÃΪͼÏñÑÚÂë¡£

ÒÔÏÂÊDz»Í¸Ã÷ºÍ͸Ã÷ͼÏñµÄ×îÖÕÍâ¹Û£º

µã»÷´ò¿ªÐ´°¿Ú
µã»÷´ò¿ªÐ´°¿Ú

ͼ 3£ºÃüÁîÀ¸°´Å¥ÉϵIJ»Í¸Ã÷ºÍ͸Ã÷ͼÏñ

˳±ã˵һÏ£¬ÇëÎ𽫠CommandBarButton ¶ÔÏóµÄ FaceId ÊôÐÔÓë CommandBarButton ¶ÔÏóµÄ Id ÊôÐÔ»ìÏýÔÚÒ»Æð¡£Id ÊôÐÔÈ·¶¨¸ÃÃüÁîÀ¸¿Ø¼þµÄÄÚÖòÙ×÷¡£ËùÓÐ×Ô¶¨ÒåÃüÁîÀ¸¿Ø¼þ Id ÊôÐÔµÄĬÈÏÖµ¾ùΪ 1¡£½«×Ô¶¨ÒåÃüÁîÀ¸¿Ø¼þµÄ Id ÊôÐÔÉèÖÃΪ 1 ÒÔÍâµÄÊý×ֻὫ×Ô¶¨ÒåÃüÁîÀ¸¿Ø¼þµÄ²Ù×÷ÉèÖÃΪÄÚÖòÙ×÷£¨Ç°ÌáÊÇÓ¦ÓóÌÐòÖдæÔÚ´Ë ID µÄÄÚÖòÙ×÷£©¡£ÎªÁ˱ãÓڲο¼£¬ÏÂÁдúÂëÁгöÁËÓ¦ÓóÌÐòÖÐËùÓÐÃüÁîÀ¸¿Ø¼þµÄËùÓÐ ID£º

Public Sub ListCommandBarControlIDs()

ÓÃ;£ºÁгöµ±Ç°Ó¦ÓóÌÐòËùÓÐÃüÁîÀ¸¿Ø¼þµÄ ID¡£

Dim objCommandBar As Office.CommandBar
Dim objCommandBarControl As Office.CommandBarControl

½«ÏÂÒ»ÐÐÌ滻Ϊ£º
For Each objCommandBar In Application.ActiveExplorer.CommandBars <- ¶ÔÓÚ Outlook
For Each objCommandBar In Application.VBE.CommandBars <- ¶ÔÓÚ Visual Basic Editor
For Each objCommandBar In Application.CommandBars

For Each objCommandBarControl In objCommandBar.Controls

Debug.Print objCommandBarControl.Caption & " " & _
objCommandBarControl.ID

Next objCommandBarControl

Next objCommandBar

End Sub

ÏòÃüÁîÀ¸ÖÐÌí¼Ó×éºÏ¿ò
ÒªÏòÃüÁîÀ¸ÖÐÌí¼Ó×éºÏ¿ò£¬ÇëʹÓà CommandBarControls ¼¯ºÏµÄ Add ·½·¨£¬²¢½« msoControlComboBox ö¾Ù³£Êý´«µÝ¸ø Type ²ÎÊý¡£È»ºóʹÓà CommandBarComboBox ¶ÔÏóµÄ AddItem ·½·¨Ïò×éºÏ¿òÖÐÌí¼ÓÑ¡Ïî¡£

ÒÔϺ¯ÊýÏòÏÖÓÐÃüÁîÀ¸ÖÐÌí¼Ó×éºÏ¿ò£º

Public Function AddComboBoxToCommandBar(ByVal strCommandBarName As String, _
ByVal strComboBoxCaption As String, _
ByRef strChoices() As String) As Boolean

ÓÃ;£ºÏòÃüÁîÀ¸ÖÐÌí¼Ó×éºÏ¿ò¡£
½ÓÊÜ£º
strCommandBarName£ºÌí¼Ó×éºÏ¿òµÄÃüÁîÀ¸Ãû³Æ¡£
strChoices()£º×éºÏ¿òÑ¡ÏîÊý×é¡£
·µ»Ø£ºÈç¹û×éºÏ¿òÒѳɹ¦Ìí¼ÓÖÁÃüÁîÀ¸ÖУ¬ÔòΪ True¡£

Dim objCommandBarControl As Office.CommandBarControl
Dim objCommandBarComboBox As Office.CommandBarComboBox
Dim varChoice As Variant

On Error GoTo AddComboBoxToCommandBar_Err

ɾ³ýÒÔÇ°Ìí¼ÓµÄ´Ë×éºÏ¿òµÄËùÓÐʵÀý¡£
½«ÏÂÒ»ÐдúÂëÌ滻Ϊ£º
For Each objCommandBarControl In _
Application.ActiveExplorer.CommandBars.Item(strCommandBarName).Controls _
<- ¶ÔÓÚ Outlook
For Each objCommandBarControl In _
Application.VBE.CommandBars.Item(strCommandBarName).Controls _
<- ¶ÔÓÚ Visual Basic Editor
For Each objCommandBarControl In Application.CommandBars.Item(strCommandBarName).Controls

If objCommandBarControl.Caption = strComboBoxCaption Then

objCommandBarControl.Delete

End If

Next objCommandBarControl

´´½¨×éºÏ¿ò¡£
½«ÏÂÒ»ÐдúÂëÌ滻Ϊ£º
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox) _
<- ¶ÔÓÚ Outlook
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox) _
<- ¶ÔÓÚ Visual Basic Editor
Set objCommandBarComboBox = _
Application.CommandBars.Item(strCommandBarName).Controls.Add(msoControlComboBox)

objCommandBarComboBox.Caption = strComboBoxCaption

For Each varChoice In strChoices

objCommandBarComboBox.AddItem varChoice

Next varChoice

AddComboBoxToCommandBar_End:

AddComboBoxToCommandBar = True
Exit Function

AddComboBoxToCommandBar_Err:

AddComboBoxToCommandBar = False

End Function

¿ÉÒÔʹÓÃÈçÏÂËùʾµÄ´úÂë²âÊԸú¯Êý£º

Public Sub TestAddComboBoxToCommandBar()

ÓÃ;£º²âÊÔ AddComboBoxToCommandBar º¯Êý¡£

Dim strChoices(4) As String

strChoices(1) = "Vanilla"
strChoices(2) = "Chocolate"
strChoices(3) = "Strawberry"
strChoices(4) = "Other"

If AddComboBoxToCommandBar("Tools", "Favorite Ice Cream", _
strChoices) = True Then

MsgBox "×éºÏ¿òÒѳɹ¦Ìí¼Ó¡£"

Else

MsgBox "δÄÜÌí¼Ó×éºÏ¿ò¡£"

End If

End Sub

½ûÓúÍÒþ²ØÃüÁîÀ¸ÓëÃüÁîÀ¸¿Ø¼þ
¿ª·¢ Office ½â¾ö·½°¸Ê±£¬Äú¿ÉÄÜÐèÒª·ÀÖ¹Óû§ÔÚÓë¸Ã½â¾ö·½°¸¹ØÁªµÄijЩÃüÁîÀ¸ºÍÃüÁîÀ¸¿Ø¼þÉϵ¥»÷¡£ÀýÈ磬Äú¿ÉÄÜÐèÒª·ÀÖ¹Óû§µ¥»÷¡°´°Ì塱¹¤¾ßÀ¸ÉϵÄÈκοؼþ£¬ÒÔÃâÐÞ¸ÄÄúÔÚ Microsoft Word Öд´½¨µÄ×Ô¶¨Òå´°Ìå¡£ÄúÒ²¿ÉÄÜÐèҪΪ¸ø¶¨µÄ½â¾ö·½°¸½ûÓá°¹¤¾ß¡±²Ëµ¥Éϵġ°ºê¡±ÃüÁî¡£

½«ÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þµÄ Enabled ÊôÐÔÉèÖÃΪ False ¿É½ûÓÃÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þ£»Í¬Ñù£¬½«ÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þµÄ Enabled ÊôÐÔÉèÖÃΪ True ¿ÉÆôÓÃÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þ¡£

½«ÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þµÄ Visible ÊôÐÔÉèÖÃΪ False ¿ÉÒþ²ØÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þ£»Í¬Ñù£¬½«ÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þµÄ Visible ÊôÐÔÉèÖÃΪ True ¿ÉÏÔʾÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þ¡£

Òª³¢ÊԴ˲Ù×÷£¬Ç뽫ÒÔÏ´úÂëÐÐÊäÈëµ½¡°Á¢¼´¡±´°¿Ú¡£Ã¿¸ö´úÂëÐн«Çл»Ö¸¶¨µÄÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þµÄÆôÓûò¿É¼û״̬¡£Èç¹ûÔÚ Outlook »ò Microsoft Visual Basic® Editor ÖÐÊäÈë´Ë´úÂ룬ÇëÎñ±ØʹÓà Application.ActiveExplorer »ò Application.VBE ÊõÓï¡£Òª·µ»Øµ½¿ªÊ¼Ê±µÄÆôÓûò¿É¼û״̬£¬ÇëÈ·±£½«Ã¿ÐÐÔËÐÐÁ½´Î¡£

Application.CommandBars("Tools").Enabled = _
Not Application.CommandBars("Tools").Enabled
Application.CommandBars("Tools").Controls("Macro").Enabled = _
Not Application.CommandBars("Tools").Controls("Macro").Enabled
Application.CommandBars("Tools").controls("Macro").Visible = _
Not Application.CommandBars("Tools").controls("Macro").Visible

¶¨Î»ÃüÁîÀ¸
ÃüÁîÀ¸µÄ Position ÊôÐÔÖ¸¶¨ÃüÁîÀ¸ÔÚÓ¦ÓóÌÐòÖеÄλÖá£msoBarLeft¡¢msoBarTop¡¢msoBarRight ºÍ msoBarBottom ö¾Ù³£ÊýÖ¸¶¨ÔÚÓ¦ÓóÌÐòµÄ×ó±ß¡¢Éϱߡ¢Óұ߻òϱßÏÔʾÃüÁîÀ¸¡£msoBarFloating ö¾Ù³£ÊýÖ¸¶¨ÃüÁîÀ¸²»¿¿½Óµ½Ó¦ÓóÌÐòµÄ±ßÔµ¡£msoBarPopup ö¾Ù³£ÊýÖ¸¶¨ÃüÁîÀ¸Êǵ¯³ö²Ëµ¥¡£

ÒÔϺ¯Êý¸ü¸ÄËùÖ¸¶¨µÄÃüÁîÀ¸µÄλÖá£

Public Function ChangeCommandBarPosition(ByVal strCommandBarName As String, _
ByVal msoPosition As MsoBarPosition) As Boolean

ÓÃ;£º¸ü¸ÄÃüÁîÀ¸µÄλÖá£
½ÓÊÜ£º
strCommandBarName£ºÒª¸ü¸ÄλÖõÄÃüÁîÀ¸Ãû³Æ¡£
·µ»Ø£ºÈç¹ûÃüÁîÀ¸Òƶ¯³É¹¦£¬ÔòΪ Ture¡£

On Error GoTo ChangeCommandBarPosition_Err

½«ÏÂÒ»ÐдúÂëÌ滻Ϊ£º
Application.ActiveExplorer.CommandBars.Item(strCommandBarName).Position = _
msoPosition <- ¶ÔÓÚ Outlook
Application.VBE.CommandBars.Item(strCommandBarName).Position = _
msoPosition <- ¶ÔÓÚ Visual Basic Editor
Application.CommandBars.Item(strCommandBarName).Position = msoPosition

ChangeCommandBarPosition_End:

ChangeCommandBarPosition = True
Exit Function

ChangeCommandBarPosition_Err:

ChangeCommandBarPosition = False

End Function

¿ÉÒÔʹÓÃÈçÏÂËùʾµÄ´úÂë²âÊԸú¯Êý£º

Public Sub TestChangeCommandBarPosition()

ÓÃ;£º²âÊÔ ChangeCommandBarPosition º¯Êý¡£

If ChangeCommandBarPosition("Standard", msoBarFloating) = True Then

MsgBox "ÃüÁîÀ¸Òѳɹ¦Òƶ¯¡£"

Else

MsgBox "δÄÜÒƶ¯ÃüÁîÀ¸¡£Ä³Ð©ÃüÁîÀ¸ÎÞ·¨" & _
"ÒÔijЩ·½Ê½Òƶ¯¡£"

End If

End Sub

¶¯Ì¬Ìí¼ÓºÍɾ³ýÃüÁîÀ¸
ÓÐʱÐèÒª½«ÃüÁîÀ¸ÓëÌض¨ Office Îĵµ¹ØÁªÔÚÒ»Æð¡£ÀýÈ磬ÄúÐèÒªÔÚÌض¨ Office Îĵµ´ò¿ªÊ±²ÅÏÔʾijЩ×Ô¶¨ÒåÃüÁîÀ¸£¬²¢ÔÚÌض¨ Office Îĵµ¹Ø±Õʱ½«ÆäÒþ²Ø¡£ÒªÒÔ±à³Ì·½Ê½Ö´Ðд˲Ù×÷£¬Ê¹Óà Excel ¾ÍÊÇÒ»¸ö²»´íµÄʾÀý¡£Òª²âÊԸòÙ×÷£¬Çë´´½¨Ò»¸öеĿհ׹¤×÷²¾£¬È»ºó½« Sheet1 ÖØÃüÃûΪ CommandBarInfo¡£½«ÒÔÏÂÐÅÏ¢¼üÈë CommandBarInfo ¹¤×÷²¾ÖУº

µã»÷´ò¿ªÐ´°¿Ú

ͼ 4£ºÔÚ Excel Öж¯Ì¬´´½¨ÃüÁîÀ¸µÄÐÅÏ¢

ÔÚ Visual Basic Editor ÖУ¬½«ÒÔÏ´úÂëÌí¼Óµ½Óëпհ׹¤×÷²¾¹ØÁªµÄдúÂëÄ£¿éÖУº

Public Function CreateCommandBarPopup() As Boolean

ÓÃ;£º¸ù¾Ý Excel ¹¤×÷±íÖÐÌṩµÄÐÅÏ¢£¬
´´½¨Ò»¸ö°üº¬²Ëµ¥ÏîµÄÃüÁîÀ¸µ¯³ö¿Ø¼þ¡£

·µ»Ø£ºÈç¹ûÃüÁîÀ¸µ¯³ö¿Ø¼þ
³É¹¦Ìí¼Ó£¬ÔòΪ True¡£

Dim objWorksheet As Excel.Worksheet
Dim objCommandBarControl As Office.CommandBarControl
Dim objCommandBarPopup As Office.CommandBarPopup
Dim objCommandBarButton As Office.CommandBarButton
Dim intRow As Integer

On Error GoTo CreateCommandBarPopup_Err

±ØÐ뽫°üº¬ÃüÁîÀ¸ÐÅÏ¢µÄ¹¤×÷±í
ÃüÃûΪ¡°CommandBarInfo¡±¡£
Set objWorksheet = ThisWorkbook.Sheets("CommandBarInfo")

´ÓÒÔÇ°µÄ°æ±¾ÖÐɾ³ý¸Ã¿Ø¼þµÄ
ËùÓÐÏÖÓÐʵÀý¡£
For Each objCommandBarControl In Application.CommandBars.Item("Standard").Controls

If objCommandBarControl.Caption = objWorksheet.Cells(1, 1) Then

objCommandBarControl.Delete

End If

Next objCommandBarControl

Set objCommandBarPopup = _
Application.CommandBars.Item("Standard").Controls.Add(msoControlPopup)

objCommandBarPopup.Caption = objWorksheet.Cells(1, 1)

intRow = 3

Ò»Ö±Ìí¼Ó°´Å¥£¬Ö±µ½±êÌâÓþ¡ÎªÖ¹¡£
Do Until objWorksheet.Cells(intRow, 1) = ""

With objCommandBarPopup

Set objCommandBarButton = .Controls.Add(msoControlButton)

With objCommandBarButton

.Caption = objWorksheet.Cells(intRow, 1)
.OnAction = objWorksheet.Cells(intRow, 2)

End With

End With

intRow = intRow + 1

Loop

CreateCommandBarPopup_End:

CreateCommandBarPopup = True
Exit Function

CreateCommandBarPopup_Err:

CreateCommandBarPopup = False

End Function

Public Function DeleteCommandBarPopup() As Boolean

ÓÃ;£º¸ù¾Ý Excel ¹¤×÷±íÖÐÌṩµÄÐÅÏ¢£¬
ɾ³ýÃüÁîÀ¸µ¯³ö¿Ø¼þ¡£

·µ»Ø£ºÈç¹ûÃüÁîÀ¸µ¯³ö¿Ø¼þ±»
³É¹¦É¾³ý£¬ÔòΪ True¡£

Dim objWorksheet As Excel.Worksheet
Dim objCommandBarControl As Office.CommandBarControl

On Error GoTo DeleteCommandBarPopup_Err

±ØÐ뽫°üº¬ÃüÁîÀ¸ÐÅÏ¢µÄ¹¤×÷±í
ÃüÃûΪ¡°CommandBarInfo¡±¡£
Set objWorksheet = ThisWorkbook.Sheets("CommandBarInfo")

ɾ³ý¸Ã¿Ø¼þµÄËùÓÐÏÖÓÐʵÀý¡£
For Each objCommandBarControl In Application.CommandBars.Item("Standard").Controls

If objCommandBarControl.Caption = objWorksheet.Cells(1, 1) Then

objCommandBarControl.Delete

End If

Next objCommandBarControl

DeleteCommandBarPopup_End:

DeleteCommandBarPopup = True
Exit Function

DeleteCommandBarPopup_Err:

DeleteCommandBarPopup = False

End Function

Public Sub TestMacro()

ÓÃ;£ºÌṩһ¸öÍêÕûÐÔ²âÊԺꡣ

MsgBox "ÕâÊDzâÊԺꡣ"

End Sub

½«ÒÔÏ´úÂëÌí¼Óµ½Ð¿հ׹¤×÷²¾µÄ ThisWorkbook Ä£¿éÖУº

Private Sub Workbook_Open()

If CreateCommandBarPopup = False Then

MsgBox "δÄÜÕýÈ·Ìí¼Óµ¯³ö²Ëµ¥¡£"

Else

MsgBox "µ¯³ö²Ëµ¥Òѳɹ¦Ìí¼Ó¡£"

End If

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If DeleteCommandBarPopup = False Then

MsgBox "δÄÜÕýȷɾ³ýµ¯³ö²Ëµ¥¡£"

Else

MsgBox "µ¯³ö²Ëµ¥Òѳɹ¦É¾³ý¡£"

End If

End Sub

±£´æ²¢¹Ø±Õ¹¤×÷²¾£¬È»ºóÖØдò¿ª¸Ã¹¤×÷²¾¡£Çë×¢Ò⣬¡°¼ÒÎñ¡±µ¯³ö²Ëµ¥ÒÑÌí¼Óµ½¡°±ê×¼¡±¹¤¾ßÀ¸ÖС£»¹Ó¦×¢Ò⣬Ôڹرմ˹¤×÷²¾Ê±£¬¡°¼ÒÎñ¡±µ¯³ö²Ëµ¥½«Ïûʧ¡£

Óйظü¼ÊõµÄ¸üÏêϸ°æ±¾£¬Çë²ÎÔÄ Excel ×ÊÉîר¼Ò (MVP) John Walkenbach ÌṩµÄ½â¾ö·½°¸£¬ÍøַΪ http://j-walk.com/ss/excel/tips/tip53.htm£¨Ó¢ÎÄ£©¡£

CommandBarDocumenter ºÍ CommandBarControlDocumenter ×ÓÀý³Ì
ÔÚ¿ª·¢ÃüÁîÀ¸½â¾ö·½°¸Ê±£¬ÎÒ¾­³£ÐèÒª»ñÈ¡Ìض¨ÃüÁîÀ¸»òÃüÁîÀ¸¿Ø¼þµÄË÷Òý¡¢Ãû³Æ»ò±êÌâ¡£ÎÒ´´½¨ÁË CommandBarDocumenter ºÍ CommandBarControlDocumenter ×ÓÀý³Ì£¬ÒԱ㽫ËùÓÐÃüÁîÀ¸ºÍÃüÁîÀ¸¿Ø¼þµÄ¹«¹²ÊôÐԼǼÔÚ¸ø¶¨µÄ Office Ó¦ÓóÌÐòÖС£

ÒªÔËÐÐÕâЩʾÀý£¬ÇëÔÚ Visual Basic Editor Öн«ÒÔÏ´úÂ븴ÖƵ½ Microsoft Office XP Ó¦ÓóÌÐòµÄ´úÂëÄ£¿é£¬È»ºóÔËÐÐÒÔÏÂ×ÓÀý³ÌÖ®Ò»»òÁ½Õ߶¼ÔËÐС£ÆÁÄ»³öÏÖÌáʾʱ£¬Ç뽫½á¹û±£´æΪÎı¾Îļþ (.txt)¡£Õâʹ½á¹û¸üÈÝÒ×¼ÓÔص½Ó¦ÓóÌÐò£¨ÀýÈç Microsoft Excel£©ÖÐÒÔ±ã²é¿´ºÍ¹ýÂË¡£

Public Sub CommandBarDocumenter()

ÓÃ;£º½«µ±Ç°Ó¦ÓóÌÐòÖÐÓйØËùÓÐÃüÁîÀ¸µÄÐÅÏ¢
дÈëÎı¾Îļþ¡£

Äú±ØÐëÏÈÉèÖÃ¶Ô Microsoft ½Å±¾ÔËÐÐʱµÄÒýÓÃ
(scrrun.dll) ²ÅÄÜʹ´Ë´úÂëÕýÈ·ÔËÐС£

×¢Ò⣺´Ë´úÂë½öÊÊÓÃÓÚ Microsoft Office XP¡£

Dim objCommandBar As Office.CommandBar
Dim strType As String
Dim strPosition As String
Dim objFileSaveDialog As Office.FileDialog
Dim objFSO As Scripting.FileSystemObject
Dim objTextStream As Scripting.TextStream
Const SAVE_BUTTON As Integer = -1

Set objFileSaveDialog = Application.FileDialog(msoFileDialogSaveAs)

objFileSaveDialog.Title = "½«½á¹ûÁí´æΪ"

Óû§µ¥»÷¡°±£´æ¡±°´Å¥¡£
If objFileSaveDialog.Show = SAVE_BUTTON Then

Set objFSO = New Scripting.FileSystemObject
Set objTextStream = objFSO.CreateTextFile(objFileSaveDialog.SelectedItems.Item(1))

objTextStream.WriteLine "Name" & vbTab & _
"Type" & vbTab & _
"Enabled" & vbTab & _
"Visible" & vbTab & _
"Index" & vbTab & _
"Position" & vbTab & _
"Protection" & vbTab & _
"Row Index" & vbTab & _
"Top" & vbTab & _
"Height" & vbTab & _
"Left" & vbTab & _
"Width"

½«ÏÂÒ»ÐÐÌ滻Ϊ£º
For Each objCommandBar In Application.ActiveExplorer.CommandBars _
<- ¶ÔÓÚ Outlook
For Each objCommandBar In Application.VBE.CommandBars <- ¶ÔÓÚ _
Visual Basic Editor
For Each objCommandBar In Application.CommandBars

Select Case objCommandBar.Type
Case msoBarTypeMenuBar
strType = "Menu Bar"
Case msoBarTypeNormal
strType = "Normal"
Case msoBarTypePopup
strType = "Pop-Up"
End Select

Select Case objCommandBar.Position
Case msoBarBottom
strPosition = "Bottom"
Case msoBarFloating
strPosition = "Floating"
Case msoBarLeft
strPosition = "Left"
Case msoBarMenuBar
strPosition = "Menu Bar"
Case msoBarPopup
strPosition = "Pop-Up"
Case msoBarRight
strPosition = "Right"
Case msoBarTop
strPosition = "Top"
End Select

Select Case objCommandBar.Protection
Case msoBarNoChangeDock
strProtection = "No Change Dock"
Case msoBarNoChangeVisible
strProtection = "No Change Visible"
Case msoBarNoCustomize
strProtection = "No Customize"
Case msoBarNoHorizontalDock
strProtection = "No Horizontal Dock"
Case msoBarNoMove
strProtection = "No Move"
Case msoBarNoProtection
strProtection = "No Protection"
Case msoBarNoResize
strProtection = "No Resize"
Case msoBarNoVerticalDock
strProtection = "No Vertical Dock"
End Select

objTextStream.WriteLine objCommandBar.Name & vbTab & _
strType & vbTab & _
objCommandBar.Enabled & vbTab & _
objCommandBar.Visible & vbTab & _
objCommandBar.Index & vbTab & _
strPosition & vbTab & _
strProtection & vbTab & _
objCommandBar.RowIndex & vbTab & _
objCommandBar.Top & vbTab & _
objCommandBar.Height & vbTab & _
objCommandBar.Left & vbTab & _
objCommandBar.Width

Next objCommandBar

objTextStream.Close

MsgBox "½á¹ûдÈë " & objFileSaveDialog.SelectedItems.Item(1) & "."

End If

End Sub

Sub CommandBarControlDocumenter()

ÓÃ;£º½«µ±Ç°Ó¦ÓóÌÐòÖÐËùÓÐÓйØÃüÁîÀ¸µÄÐÅÏ¢
дÈëÎı¾Îļþ¡£

Äú±ØÐëÏÈÉèÖÃ¶Ô Microsoft ½Å±¾ÔËÐÐʱµÄÒýÓÃ
²ÅÄÜʹ´Ë´úÂëÕýÈ·ÔËÐС£

×¢Ò⣺´Ë´úÂë½öÊÊÓÃÓÚ Microsoft Office XP¡£

Dim objCommandBar As Office.CommandBar
Dim objCommandBarControl As Office.CommandBarControl
Dim strOLEUsage As String
Dim strType As String
Dim objFileSaveDialog As Office.FileDialog
Dim objFSO As Scripting.FileSystemObject
Dim objTextStream As Scripting.TextStream
Const SAVE_BUTTON As Integer = -1

Set objFileSaveDialog = Application.FileDialog(msoFileDialogSaveAs)

objFileSaveDialog.Title = "½«½á¹ûÁí´æΪ"

Óû§µ¥»÷¡°±£´æ¡±°´Å¥¡£
If objFileSaveDialog.Show = SAVE_BUTTON Then

Set objFSO = New Scripting.FileSystemObject
Set objTextStream = objFSO.CreateTextFile(objFileSaveDialog.SelectedItems.Item(1))

objTextStream.WriteLine "ID" & vbTab & _
"Index" & vbTab & _
"Caption" & vbTab & _
"Parent" & vbTab & _
"DescriptionText" & vbTab & _
"BuiltIn" & vbTab & _
"Enabled" & vbTab & _
"IsPriorityDropped" & vbTab & _
"OLEUsage" & vbTab & _
"Priority" & vbTab & _
"Tag" & vbTab & _
"TooltipText" & vbTab & _
"Type" & vbTab & _
"Visible" & vbTab & _
"Height" & vbTab & _
"Width"

½«ÏÂÒ»ÐÐÌ滻Ϊ£º
For Each objCommandBar In Application.ActiveExplorer.CommandBars <- ¶ÔÓÚ Outlook
For Each objCommandBar In Application.VBE.CommandBars _
<- ¶ÔÓÚ Visual Basic Editor
For Each objCommandBar In Application.CommandBars

For Each objCommandBarControl In objCommandBar.Controls

Select Case objCommandBarControl.OLEUsage

Case msoControlOLEUsageBoth
strOLEUsage = "Both"
Case msoControlOLEUsageClient
strOLEUsage = "Client"
Case msoControlOLEUsageNeither
strOLEUsage = "Neither"
Case msoControlOLEUsageServer
strOLEUsage = "Server"

End Select

Select Case objCommandBarControl.Type

Case msoControlActiveX
strType = "ActiveX"
Case msoControlAutoCompleteCombo
strType = "Auto-Complete Combo Box"
Case msoControlButton
strType = "Button"
Case msoControlButtonDropdown
strType = "Drop-Down Button"
Case msoControlButtonPopup
strType = "Popup Button"
Case msoControlComboBox
strType = "Combo Box"
Case msoControlCustom
strType = "Custom"
Case msoControlDropdown
strType = "Drop-Down"
Case msoControlEdit
strType = "Edit"
Case msoControlExpandingGrid
strType = "Expanding Grid"
Case msoControlGauge
strType = "Gauge"
Case msoControlGenericDropdown
strType = "Generic Drop-Down"
Case msoControlGraphicCombo
strType = "Graphic Combo Box"
Case msoControlGraphicDropdown
strType = "Graphic Drop-Down"
Case msoControlGraphicPopup
strType = "Popup Graphic"
Case msoControlGrid
strType = "Grid"
Case msoControlLabel
strType = "Label"
Case msoControlLabelEx
strType = "LabelEx"
Case msoControlOCXDropdown
strType = "OCX Drop-Down"
Case msoControlPane
strType = "Pane"
Case msoControlPopup
strType = "Popup"
Case msoControlSpinner
strType = "Spinner"
Case msoControlSplitButtonMRUPopup
strType = "Split Button MRU Popup"
Case msoControlSplitButtonPopup
strType = "Button Popup"
Case msoControlSplitDropdown
strType = "Split Drop-Down"
Case msoControlSplitExpandingGrid
strType = "Split Expanding Grid"
Case msoControlWorkPane
strType = "Work Pane"

End Select

objTextStream.WriteLine objCommandBarControl.ID & _
vbTab & _
objCommandBarControl.Index & vbTab & _
objCommandBarControl.Caption & vbTab & _
objCommandBarControl.Parent.Name & vbTab & _
objCommandBarControl.DescriptionText & vbTab & _
objCommandBarControl.BuiltIn & vbTab & _
objCommandBarControl.Enabled & vbTab & _
objCommandBarControl.IsPriorityDropped & vbTab & _
strOLEUsage & vbTab & _
objCommandBarControl.Priority & vbTab & _
objCommandBarControl.Tag & vbTab & _
objCommandBarControl.TooltipText & vbTab & _
strType & vbTab & _
objCommandBarControl.Visible & vbTab & _
objCommandBarControl.Height & vbTab & _
objCommandBarControl.Width

Next objCommandBarControl

Next objCommandBar

objTextStream.Close

MsgBox "½á¹ûдÈë " & _
objFileSaveDialog.SelectedItems.Item(1) & "."

End If

End Sub



--------------------------------------------------------------------------------
Ïà¹ØÎÄÕÂ

ûÓÐÏà¹ØÎÄÕÂ


ϵͳÓÅ»¯
¿Ø¼þʹÓÃ
Êý¾Ý¿âÉè¼Æ
Êý¾Ý¿âÁ¬½Ó
ϵͳ°²È«
OLE×Ô¶¯»¯
³£¼ûÎÊÌâ
ʵÓôúÂë
ÊôÐÔÏê½â
ÍøÂçÏà¹Ø
ʵÓÃAPI
¾­Ñé·ÖÏí
¾«Ñ¡½Ì³Ì
×Ö·û´¦Àí
ADPÏà¹Ø



ÎÄÕÂËÑË÷



ÖÆ×÷ά»¤£ºÀîÑ°»¶     Mail:[email protected]

¹ØÓÚ±¾Õ¾ -- ÍøÕ¾·þÎñ -- °æȨÌõ¿î -- ÁªÏµ·½·¨ -- ÍøÕ¾°ïÖú
Access°®ºÃÕß°æȨËùÓÐ Copyright 2003-2005 All Rights Reserved δ¾­Ðí¿É²»µÃµÁÁ´