1. 程式人生 > >如何在 VB 中以程式設計方式建立並呼叫 Excel 巨集

如何在 VB 中以程式設計方式建立並呼叫 Excel 巨集

1. 在 Visual Basic 中建立一個標準 EXE 專案。預設情況下會建立 Form1。
2. 單擊“專案”選單中的“引用”,然後選中“Microsoft Visual Basic for Applications Extensibility”。
3. 向 Form1 中新增一個 CommandButton。
 Private Sub Command1_Click()
       ' Start Excel
       Dim xlapp As Object 'Excel.Application
       Set xlapp = CreateObject("Excel.Application")

       ' Make it visible...
       xlapp.Visible = True

       ' Add a new workbook
       Dim xlbook As Object 'Excel.Workbook
       Set xlbook = xlapp.Workbooks.Add

       ' Add a module
       Dim xlmodule As Object 'VBComponent
       Set xlmodule = xlbook.VBProject.VBComponents.Add(1) 'vbext_ct_StdModule

       ' Add a macro to the module...
       Dim strCode As String
       strCode = _
          "sub MyMacro()" & vbCr & _
          "   msgbox ""Inside generated macro!!!"" " & vbCr & _
          "end sub"
       xlmodule.CodeModule.AddFromString strCode


       ' Run the new macro!
       xlapp.Run "MyMacro"

       ' ** Create a new toolbar with a button to fire macro...
       ' Add a new toolbar...
       Dim cbs As Object 'CommandBars
       Dim cb As Object 'CommandBar
       Set cbs = xlapp.CommandBars
       Set cb = cbs.Add("MyCommandBar", 1, , True) '1=msoBarTop
       cb.Visible = True

       ' Make it visible & add a button...
       Dim cbc As Object 'CommandBarControl
       Set cbc = cb.Controls.Add(1) '1=msoControlButton

       ' Assign our button to our macro
       cbc.OnAction = "MyMacro"

       ' Set text...
       cbc.Caption = "Call MyMacro()"

       ' Set Face image...
       ' 51 = white hand
       ' 25 = glasses
       ' 34 = ink dipper
       ' etc...
       cbc.FaceId = 51

       ' Pause so you can inspect results...
       MsgBox "All done, click me to continue...", vbMsgBoxSetForeground

       ' Remember to release module
       Set xlmodule = Nothing

       ' Clean up
       xlbook.Saved = True
       xlapp.Quit
      End Sub

相關推薦

如何在 VB 程式設計方式建立呼叫 Excel 巨集

1. 在 Visual Basic 中建立一個標準 EXE 專案。預設情況下會建立 Form1。 2. 單擊“專案”選單中的“引用”,然後選中“Microsoft Visual Basic for Applic

程式設計方式建立繼承窗體

實現效果:      知識運用:   引用應包含該窗體的名稱空間 後面跟一個點 然後是基窗體本身的名稱   如果繼承窗體和基窗體同屬於一個名稱空間 修改繼承窗體的基類引用時 只需改基類名稱 實現程式碼: public partial class Form2 :Form1 {

Excel 程式設計方式複製工作表會導致執行時錯誤 1004

建立一個新的工作簿,然後保留一個工作表並刪除其他所有工作表。設定該工作簿的格式,然後新增模板必須預設包含的所有文字、資料和圖表。單擊“Microsoft Office 按鈕”,然後單擊“另存為”。在“檔名”框中,鍵入所需的 Excel 模板名稱。在“儲存型別”列表中,單擊“模板 (*.xltx)”,然後單擊“

在C語言程式設計方式獲取函式名

  在C語言中以程式設計的方式獲取函式名 僅僅為了獲取函式名,就在函式體中嵌入硬編碼的字串,這種方法單調乏味還易導致錯誤,不如看一下怎樣使用新的C99特性,在程式執行時獲取函式名吧。 物件反射庫、除錯工具及程式碼分析器,經常會需要在執行時訪問函式的名稱,直到不久前,唯

在PL/SQL Developer和oracle如何新建儲存過程呼叫儲存過程

1、新建程式視窗,選擇Procedure 2、寫入procedure以後,要執行程式進行編譯 3、編譯成功以後,有三種方法可以執行procedure 第一種是在命令視窗執行exec procedure name SQL> exec procedure_name();

Spark SQL簡介及程式設計方式實現SQL查詢

1.什麼是SparkSQL? Spark SQL是Spark用來處理結構化資料的一個模組,它提供了一個程式設計抽象叫做DataFrame並且作為分散式SQL查詢引擎的作用。 2.SparkSQL的特點: 我們已經學習了Hive,它是將Hive SQL轉換成M

DirectX12(D3D12)基礎教程(三)——使用獨立堆“定位方式建立資源、建立動態取樣器、初步理解採取器型別

目錄 1、前言 1、前言 經過了第二部分教程的“折騰”之後,後面的教程我覺得應該順暢多了。至少我現在可以一天時間就把教程示例程式碼調通,並且可以按照自己的想法自由的去發揮了。我很喜歡這種感覺,就像在打遊戲中虐那些無腦的機器AI角色一樣。 經過前面兩

springboot開發 POST方式向後臺傳遞json資料的時候引數值為null

自己寫了一個簡單的springboot後臺程式碼,當我用postman以post方式向後臺傳遞json物件時,後臺物件的引數值總是為null,找了好久終於解決了,下面分享一下我的解決問題艱辛路程。 明明我傳了引數值,但是debug除錯的時候就是獲取不到。 1.首先

Spark SQL將rdd轉換為資料集-程式設計方式指定模式(Programmatically Specifying the Schema)

一:解釋 官網:https://spark.apache.org/docs/latest/sql-getting-started.html 這種場景是生活中的常態 When case classes cannot be defined ahead of time (for example

解決ThinkPHPGet方式提交中文字元亂碼

接觸thinkPHP還沒幾天,都還沒入門呢,因為公司專案非常著急,自己也對thinkPHP很有興趣想借機會提高一下,就著急的用thinkPHP開始了,當然是遇到了非常多的問題,不過還好通過朋友gi

如何程式設計方式將一個 IMG 元素複製到剪貼簿

STDMETHODIMP CMyBrowser::CopyImage(LPDISPATCH pDispDoc, VARIANT vImageID) { HRESULT hr = E_FAIL; IHTMLDocument2* pDo

Ecshop導航欄使用二級選單顯示呼叫子分類

最近公司交給我一個任務,就是要我使用ecshop仿照某國外著名商城網站的模板,前臺樣式模仿就直接照抄照搬,整個過程還相對簡單,但就在一個問題上卡住了,就是模板中有涉及主導航二級欄目顯示分類商品問題,老實說,這一次是第一

ABAP 建立呼叫WebService

一. 建立Webservice     有兩種方式建立webservice,一種是在se80中使用wizard生成,另一種是直接在se37中給予function生成,具體操作如下:     1.se80中Create-->Enterprise Service/Web

JS使用jquery方式建立名稱空間

    以下示例將展示建立名稱空間的高階方式 JS將擁有私有和共有屬性和方法並且可以具有類似JAVA繼承的功能Here is their example showing how to declare private & public properties and

Confluence 6 Windows 服務方式自動重啟修改執行服務的使用者

基於安全的考慮,如果你希望你的 Confluence 不是在系統中以管理員的身份執行或者你使用網路驅動器來儲存備份,附件和索引的話,你可以以其他使用者來執行 Confluence。 希望修改使用者,開啟 Apache Tomcat Confluence 屬性檔案,進入 'Log On' 標籤頁,然後輸入需要

Confluence 6 Windows 服務方式自動重啟的原因

針對長時間使用的 Confluence,我們推薦你配置 Confluence 自動隨作業系統重啟而啟動。針對一些 Windows 的伺服器,這意味著需要讓 Confluence 以服務的方式執行。 有下面 2 種方式來以服務的方式安裝 Confluence:使用 Confluence installer 進

SoapUI新增ssl證書,呼叫rest介面地址

       隨著專案的對接並考慮到安全層面。我們會啟用ssl證書的驗證方式,而rest 介面的開放又是目前比較好用的介面接入方式。接下來介紹SoapUI中通過證書呼叫rest地址。 新增證書 File-->Preferences 選擇證書路徑並設定密碼

VC++建立呼叫Ocx控制元件

 我們寫一個Ocx控制元件加法的例子!!! 首先開啟VC,我們建立一個MFC ActiveX ControlWizard工程 切換到類檢視 選中_DActiveX,右擊選擇Add Method 彈出如下對話方塊,填入相應的引數 再次開啟類檢視,會發現_DActive

AngularJSDirective傳function,呼叫

在Angularjs中,指令是個好東西,可以極大的提高程式碼的重用性,也可以使各個模組之間解耦,提高程式碼的可維護性。但是在實際開發中,僅僅用它來傳遞值是遠遠不夠的,傳遞方法在很多情況下比傳遞值更加有效,下面我來介紹下如何往directiive中傳遞方法。

unity3d使用精靈sprite建立控制2d動畫

這裡明確幾個概念 Animation是每一個動畫,動畫本身不能獨立在場景中播放 Animator是動畫控制器,一個動畫控制器裡可以包含多個動畫,根據條件選擇播放哪一個動畫 精靈Sprite上掛載Animator動畫控制器來播放動畫 crtl+6開啟animation編輯面板