Filed under: Excel VBA 範例, Top, VBE

Excel VBE Google Search 增益集

by chijanzen on 八月 10th, 2008 | View: 4,224 views

Tags Share Comments (0)
索   引 F0014
主   題 Excel VBE Google Search 增益集
版   本 >= 10.0(Office 2002)
說   明

   本範例會在[程式碼視窗]CommandBars("Code Window")上載入 Google
搜尋工具,共有三個功能。

      1.搜尋網站

      2.搜尋 Excel 社群討論區

      3.搜尋 API 函數

  使用方法非常簡單,只要選取要搜尋的字串按滑鼠右鍵就能使用該工具

參   考



複製以下程式碼到ThisWorkbook

Code


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    RemoveNewMenuItems
End Sub
 


Private Sub Workbook_Open()
    AddNewMenuItems
End Sub
 


複製以下程式碼到Module

Code


Dim CmdDCweb As VBEGOHandler
Dim CmdDCvba As VBEGOHandler
Dim CmdDCtw As VBEGOHandler
Dim CmdAPI As VBEGOHandler
Dim CmdGroup As VBEGOHandler
Dim CmdItem As CommandBarControl
Dim cmdParent As CommandBarControl
Dim Cmd As CommandBarControl
Dim StartLine As Long
Dim EndLine As Long
Dim StartCol As Long
Dim EndCol As Long
 


Sub AddNewMenuItems()
    Dim r As Integer
    RemoveNewMenuItems
    With Application.VBE.CommandBars("Code Window")
        '讓新增的控制項保持在中間位置
        r = VBA.Int(.Controls.Count / 2) + 2
        Set cmdParent = .Controls.Add(Type:=msoControlPopup, _
                Before:=r, Temporary:=True)
    End With
    cmdParent.Caption = "GoogleSearch"
    With cmdParent
        '第一階:Google 搜尋..
        Set CmdItem = .Controls.Add(Type:=msoControlPopup)
        CmdItem.Caption = "Google 搜尋.."
        'Web
        Set Cmd = CmdItem.Controls.Add
        Cmd.Caption = "Google 搜尋:Web"
        ThisWorkbook.Sheets("code").Shapes("google").Copy
        Cmd.PasteFace
        Set CmdDCweb = New VBEGOHandler
        Set CmdDCweb.DCEvtweb = Application.VBE.Events.CommandBarEvents(Cmd)
        'vba.com.tw
        Set Cmd = CmdItem.Controls.Add
        Cmd.Caption = "Google 搜尋:chijanzen.net"
        ThisWorkbook.Sheets("code").Shapes("vba").Copy
        Cmd.PasteFace
        CmdItem.BeginGroup = True
        Set CmdDCvba = New VBEGOHandler
        Set CmdDCvba.DCEvtvba = Application.VBE.Events.CommandBarEvents(Cmd)
        'Taiwan
        Set Cmd = CmdItem.Controls.Add
        Cmd.Caption = "Google 搜尋:Taiwan"
        ThisWorkbook.Sheets("code").Shapes("tw").Copy
        Cmd.PasteFace
        CmdItem.BeginGroup = True
        Set CmdDCtw = New VBEGOHandler
        Set CmdDCtw.DCEvttw = Application.VBE.Events.CommandBarEvents(Cmd)
        '第一階:Excel 社群搜尋
        Set Cmd = .Controls.Add(Type:=msoControlButton)
        Cmd.Caption = "Excel社群搜尋"
        ThisWorkbook.Sheets("code").Shapes("cm").Copy
        Cmd.PasteFace
        Set CmdGroup = New VBEGOHandler
        Set CmdGroup.DLEvtGroup = Application.VBE.Events.CommandBarEvents(Cmd)
    End With
End Sub
 

Sub RemoveNewMenuItems()
    On Error Resume Next
    With Application.VBE.CommandBars("Code Window")
        .Controls("GoogleSearch").Delete
    End With
End Sub
 

Sub vbDHTMLEditText()
    Dim mi As Integer, mk As Integer
    '讀入 Html 語法
    With ThisWorkbook
        For mi = 1 To 205
            HTML = HTML & .Sheets("code").Cells(mi, 1).Text & vbCrLf
        Next mi
        With WebForm.webDHTMLEdit
            .BrowseMode = True: .ScrollBars = False
            .DocumentHTML = HTML
            Do While .Busy: DoEvents: Loop
        End With
    End With
End Sub
 

Sub Evtweb()
    With Application.VBE.ActiveCodePane.CodeModule
        '在 VBE 視窗中取得 SetSelection 內容
        .CodePane.GetSelection StartLine, StartCol, EndLine, EndCol
        '取得第一句字串
        cArray = Split(Mid(.Lines(StartLine, 1), StartCol, _
                EndCol - StartCol), " ")
        On Error Resume Next
        ctxt = cArray(0)
        If Err > 0 Then
            MsgBox "您未正確選取字串"
            Exit Sub
        End If
    End With
    DoEvents
    With WebForm.webDHTMLEdit.dom.all
        .q.Item(0).Value = ctxt
        .sa.Click
    End With
End Sub
 

Sub Evtvba()
    With Application.VBE.ActiveCodePane.CodeModule
        '在 VBE 視窗中取得 SetSelection 內容
        .CodePane.GetSelection StartLine, StartCol, EndLine, EndCol
        '取得第一句字串
        cArray = Split(Mid(.Lines(StartLine, 1), StartCol, _
                EndCol - StartCol), " ")
        ctxt = cArray(0)
        If Err > 0 Then
            MsgBox "您未正確選取字串"
            Exit Sub
        End If
    End With
    DoEvents
    With WebForm.webDHTMLEdit.dom.all
        Set ccc = .q
        .q.Item(0).Value = ctxt
        .sitesearch.Item(1).Checked = True
        .sa.Click
    End With
End Sub
 

Sub Evttw()
    With Application.VBE.ActiveCodePane.CodeModule
        '在 VBE 視窗中取得 SetSelection 內容
        .CodePane.GetSelection StartLine, StartCol, EndLine, EndCol
        '取得第一句字串
        cArray = Split(Mid(.Lines(StartLine, 1), StartCol, _
                EndCol - StartCol), " ")
        ctxt = cArray(0)
        If Err > 0 Then
            MsgBox "您未正確選取字串"
            Exit Sub
        End If
    End With
    DoEvents
    With WebForm.webDHTMLEdit.dom.all
        .q.Item(1).Value = ctxt
        .btnG.Click
    End With
End Sub
 

Sub Evtapi()
    With Application.VBE.ActiveCodePane.CodeModule
        '在 VBE 視窗中取得 SetSelection 內容
        .CodePane.GetSelection StartLine, StartCol, EndLine, EndCol
        '取得第一句字串
        cArray = Split(Mid(.Lines(StartLine, 1), StartCol, _
                EndCol - StartCol), " ")
        ctxt = cArray(0)
        If Err > 0 Then
            MsgBox "您未正確選取字串"
            Exit Sub
        End If
    End With
    DoEvents
    With WebForm.webDHTMLEdit.dom.all
        .sv.Value = ctxt
        .apisa.Click
    End With
End Sub
 

Sub EvtGroup()
    With Application.VBE.ActiveCodePane.CodeModule
        '在 VBE 視窗中取得 SetSelection 內容
        .CodePane.GetSelection StartLine, StartCol, EndLine, EndCol
        '取得第一句字串
        cArray = Split(Mid(.Lines(StartLine, 1), StartCol, _
                EndCol - StartCol), " ")
        On Error Resume Next
        ctxt = cArray(0)
        If Err > 0 Then
            MsgBox "您未正確選取字串"
            Exit Sub
        End If
    End With
    DoEvents
    With WebForm.webDHTMLEdit.dom.all
        .as_q.Value = ctxt
        .sa_q.Click
    End With
End Sub
 


複製以下程式碼到 Class

Code


Option Explicit
Public WithEvents DCEvtweb As VBIDE.CommandBarEvents
Public WithEvents DCEvtvba As VBIDE.CommandBarEvents
Public WithEvents DCEvttw As VBIDE.CommandBarEvents
Public WithEvents DLEvtapi As VBIDE.CommandBarEvents
Public WithEvents DLEvtGroup As VBIDE.CommandBarEvents
 


Private Sub EvtHandler_Click(ByVal CommandBarControl As Object, _
                             handled As Boolean, CancelDefault As Boolean)
    On Error Resume Next
    handled = True
    CancelDefault = True
End Sub
 

Private Sub DCEvtweb_Click(ByVal CommandBarControl As Object, _
                           handled As Boolean, CancelDefault As Boolean)
    vbDHTMLEditText
    Evtweb
End Sub
 

Private Sub DCEvtvba_Click(ByVal CommandBarControl As Object, _
                           handled As Boolean, CancelDefault As Boolean)
    vbDHTMLEditText
    Evtvba
End Sub
 

Private Sub DLEvtapi_Click(ByVal CommandBarControl As Object, _
                           handled As Boolean, CancelDefault As Boolean)
    vbDHTMLEditText
    Evtapi
End Sub
 

Private Sub DLEvtGroup_Click(ByVal CommandBarControl As Object, _
                             handled As Boolean, CancelDefault As Boolean)
    vbDHTMLEditText
    EvtGroup
End Sub
 

Private Sub DCEvttw_Click(ByVal CommandBarControl As Object, _
                          handled As Boolean, CancelDefault As Boolean)
    vbDHTMLEditText
    Evttw
End Sub
 

Help

Code

 由於本範例使用 DHTM 控件,所以Internet Explorer 需設定為預設的網頁瀏覽器,否則無法開啟搜尋網頁。如何變更預設瀏覽器 的作法 
 


 附件內含安裝程式,請將兩個檔案壓縮到同一個資料夾中,再執行 InstallAddin.xls 中的[Install] 按鈕


 
Office2003 開啟Active控件時會出現是否啟動Active控件的提示,請參考 取消Active控件初始化提示(UFI control )的解決方法

 要暫時移除此增益集請選取Excel功能表[工具]=>[增益集]=>取消勾選[OnlineMusic]項目;要永久移除此增益集請執行InstallAddin.xls 中的[Uninstall] 按鈕


 使用本範例如有錯誤或建議,請在本頁中下方的[迴響]區中發表

 

 VBE 密碼:chijanzen

 

DownLoad

Code


檔案下載

Popularity: 22%

About the Author
    網路化名: chijanzen、中國龍、邪兵衛 經歷: 第二屆微軟社群之星 第三屆微軟「最有價值專家」 第五屆微軟「最有價值專家」
No comments currently exist for this post.

Why don't you make one?

Get a GravatarLeave a Reply

Name: « Required

Email Address: « Required

Website URL: « Optional

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

About me
chijanzen 分享個人Excel VBA 學習經驗,架站心得, 日常生活記事等...

Add to Google

分類
Translator
Chinese (Simplified) flagItalian flagKorean flagEnglish flagGerman flag
French flagJapanese flagRussian flagBulgarian flagFinnish flag
相簿