引用 | 編輯
ebolaman
2011-06-30 08:42 |
1樓
▲ ▼ |
不管是巨集(Macros)的模組(.bas)還是文件的模組
只要加入 Sub main 即可,接著用 Sub main 去呼叫你想要的 程序或函數即可 Tips : 在 Word 2003 裡面,點工具列右鍵 >> Visual Basic 這樣編輯會比較快 複製程式 Sub main() MsgBox "testing" End Sub 你可以再詳細描述一點 x0 |
引用 | 編輯
qoo98756
2011-06-30 21:22 |
2樓
▲ ▼ |
抱歉 我還是不太懂...
能不能請您幫小弟做一個範本 借我參考... Sub main() MsgBox "testing" End Sub 這串程式 我要直接貼我的巨集放在? 還有 我VB是想做成一個按鍵 然後啟動 我的巨集 抱歉 問題有點多... 有請高手包我解答 我會很感激你的... x0 |
引用 | 編輯
ebolaman
2011-07-01 00:04 |
3樓
▲ ▼ |
啊啊,抱歉,我誤會了你的意思
我以為你是在說 Word 裡面的巨集 因為程式都必須要 "程序進入點",所以如果你的程式沒有 表單(Form) 之類的東西 只剩模組的話,就要在模組裡面加一個 主程序 Sub main 來當作起始點 就像 C++ Console的 由 int main() 來起始一樣 你遇到的是這個吧 只要加入 Sub main() 即可解決,找一個空白的地方貼上即可 範例程式碼 (只有一個 .bas ,在此模組 .bas 中): 複製程式 Option Explicit Public Sub main() Dim d As Double d = calc_factorial(5) MsgBox d '計算 5! = 5*4*3*2*1 End Sub Public Function calc_factorial(ByRef max As Double) As Double Dim d As Double calc_factorial = 1 For d = 2 To max calc_factorial = calc_factorial * d Next d End Function 但是你的意思是不是要做出一個 程式(有表單,互動式的那種) 那麼就要加入一個表單,用表單的程序來呼叫 .bas 裡面的函數才行了 專門在 Word 上執行的巨集有些到 VB 都無法執行,大概只能用一些單純資料轉換的函數了 x1 |
引用 | 編輯
ebolaman
2011-07-01 09:13 |
5樓
▲ ▼ |
||||||||||
恩,這樣就要用表單來設計了
我試做了一個 VB6 專案 : Run macros 可以以特定 巨集名稱 批次執行大量 Word 文件,請參考 但是你將 NewMacros 從 Word 抽取出來了吧,其實不需要那個模組 將 巨集 直接儲存在 Word 文件裡面 即可從 外部執行 底下附的檔案解壓縮後,到 [Program] 找已經編譯的程式 Run macros.exe 可以將 [VB6 Project]\[Documents] Test\testing.doc 這個我做的測試文件拖曳到 程式裡面 試試看 由於巨集包含在 testing.doc 裡面,因此只需要特定的巨集名稱就能執行大量的 文件 唯一的缺點是 巨集名稱是固定的 (底下的程式設定為 macro1 ) ,我有看到其他人能取得 文件內 巨集的程式碼 但我剛剛測試,他說不允許用外部程式編輯,我可能能力不足,也只好作罷 VB6 專案在 [VB6 Project] 內,可以自行編輯 要注意,裡面的三個模組都是程式本身自行使用的,並非抽取出來的巨集 核心程式碼: (位於 mod_macros 模組) 複製程式 Public Sub run_macros_prebuild() On Error GoTo Err1 Set objapp = CreateObject("Word.Application") With objapp .Visible = set_appvisible End With appstatus = 1 Exit Sub Err1: MsgBox "發生未知錯誤,無法建立 Word 元件 " & vbNewLine & Err.Description End Sub Public Sub run_macro(ByRef name As String, ByRef dir As String, ByRef outputdir As String) If appstatus = 0 Then run_macros_prebuild On Error GoTo Err1 With objapp .Documents.Open FileName:=dir .Run name 'Run macros With objapp.ActiveDocument.Content.Find 'Add something here End With .ActiveDocument.SaveAs force_dir(Replace(outputdir, "%Appdir%", App.Path)) & get_filename(dir) .Documents.Close End With Exit Sub Err1: MsgBox "發生未知錯誤 " & vbNewLine & Err.Description End Sub 最主要的程式碼是這一行,建立 Word 的元件 Set objapp = CreateObject("Word.Application") 接著就能用 objapp 去控制 Word 的周遭環境 舉凡 開啟檔案、關閉檔案、控制 Word視窗、控制文件內容等 都能以 objapp 的成員來控制 可以上網搜尋 Word.Application, VB 控制 Word 等關鍵詞來找更詳細的文章 另外我參考的一些網頁 (也附在 [VB6 Project]\[References]\Word.Application.txt ): http://tw.knowledge.yahoo.com/question/question?qid=1508050802551 http://phorum.study-area.org/index.php?topic=34203.0 http://tw.knowledge.yahoo.com/question/question?qid=1508051901894 http://blog.tenyi.com/2007/09/vbvbawordmacro.html
x1 |
引用 | 編輯
ebolaman
2011-07-02 12:17 |
7樓
▲ ▼ |
下面是引用 qoo98756 於 2011-07-02 06:15 發表的 : 沒裝 Word 將會造成很大的困擾,並非不可行 因為巨集的原先 "執行環境" 是在 Word 下,沒有了 Word,那麼 CreateObject("Word.Application") 就當場失效 後面也不能做任何事情 這麼一來就只能自行解析 doc 文件,有些像是 免費軟體 OpenOffice, Total Commander, Free Opener 都能自行開啟 doc 文件 這個對我而言太難,而且還要執行巨集這是難上加難 x0 |
引用 | 編輯
qoo98756
2011-07-03 01:26 |
8樓
▲ ▼ |
下面是引用 ebolaman 於 2011-07-02 12:17 發表的 : 但是我的巨集是用WORD的VB寫的 照理說 我把程式碼換到VB6在+上一個表單應該就可以了啊~"~ x0 |
引用 | 編輯
ebolaman
2011-07-03 06:32 |
9樓
▲ |
下面是引用 qoo98756 於 2011-07-03 01:26 發表的 : 原來你是要這樣做 那麼在有安裝 Word 的電腦上,ActiveDocument 只要轉換成 objapp 的成員就 OK 了 你可以將其中一小段 巨集 程式碼貼上來看看 如果我想的沒錯的話,只要在模組加上一個程序及幾個變數即可 你認為不管 Word 還是 VB,都是用相同的程式碼 問題是在 Word 製作的巨集 通常都是控制 Word 環境的東西 (所以你最好把一小段巨集貼上來看看,免得我不知道如何去修改) VB6 預設裡面可沒有 ActiveDocument 的控制項,所以直接將 巨集從 Word 拖到 VB6 裡面就直接執行是不可行的 x0 |