廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 3729 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
qoo98756
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x1 鮮花 x13
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[Basic][求助] 搜GOOGLE一個晚上了 關於巨集的問題
小弟不才

最近在改一個程式

關於Word巨集的 如何能讓巨集做 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



獻花 x0 回到頂端 [樓 主] From:臺灣碩網網路娛樂股份有限公司 | Posted:2011-06-30 07:26 |
ebolaman 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎

級別: 副版主 該用戶目前不上站
版區: 程式設計
推文 x38 鮮花 x458
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

不管是巨集(Macros)的模組(.bas)還是文件的模組

只要加入 Sub main 即可,接著用 Sub main 去呼叫你想要的 程序或函數即可


Tips : 在 Word 2003 裡面,點工具列右鍵 >> Visual Basic 這樣編輯會比較快


複製程式
Sub main()

  MsgBox "testing"

End Sub

你可以再詳細描述一點


My BOINC stats :

獻花 x0 回到頂端 [1 樓] From:台灣寬頻通訊顧問股份有限公司 | Posted:2011-06-30 08:42 |
qoo98756
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x1 鮮花 x13
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

抱歉 我還是不太懂...

能不能請您幫小弟做一個範本 借我參考...

Sub main()

  MsgBox "testing"

End Sub

這串程式 我要直接貼我的巨集放在?

還有 我VB是想做成一個按鍵 然後啟動 我的巨集

抱歉 問題有點多... 有請高手包我解答 我會很感激你的...


獻花 x0 回到頂端 [2 樓] From:臺灣碩網網路娛樂股份有限公司 | Posted:2011-06-30 21:22 |
ebolaman 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎

級別: 副版主 該用戶目前不上站
版區: 程式設計
推文 x38 鮮花 x458
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

啊啊,抱歉,我誤會了你的意思

我以為你是在說 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 都無法執行,大概只能用一些單純資料轉換的函數了


[ 此文章被ebolaman在2011-07-01 00:32重新編輯 ]

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


My BOINC stats :

獻花 x1 回到頂端 [3 樓] From:台灣寬頻通訊顧問股份有限公司 | Posted:2011-07-01 00:04 |
qoo98756
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x1 鮮花 x13
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 ebolaman 於 2011-07-01 00:04 發表的 : 到引言文
啊啊,抱歉,我誤會了你的意思
我以為你是在說 Word 裡面的巨集



因為程式都必須要 "程序進入點",所以如果你的程式沒有 表單(Form) 之類的東西
.......

謝謝你 抱歉歐

我vb6還不是很熟= =

我是想做成這種



按GO!就執行我的.bas

盡量說簡單一點 我大腦有點轉不太過來 拍謝= =


獻花 x0 回到頂端 [4 樓] From:臺灣碩網網路娛樂股份有限公司 | Posted:2011-07-01 06:08 |
ebolaman 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎

級別: 副版主 該用戶目前不上站
版區: 程式設計
推文 x38 鮮花 x458
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

恩,這樣就要用表單來設計了

我試做了一個 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/quest...d=1508050802551

http://phorum.study-area.org...opic=34203.0

http://tw.knowledge.yahoo.com/quest...d=1508051901894

http://blog.tenyi.com/2007/...dmacro.html


本帖包含附件
zip Run_macros.rar   (2022-06-09 14:18 / 56 KB)  
說明: Run_macros | Filetype : RAR | CRC-32 : AF13FC22
下載次數:3


[ 此文章被ebolaman在2011-07-01 09:42重新編輯 ]

此文章被評分,最近評分記錄
財富:50 (by 三仙) | 理由: ^^ 因為您的參與,讓程式設計更容易!!


My BOINC stats :

獻花 x1 回到頂端 [5 樓] From:台灣寬頻通訊顧問股份有限公司 | Posted:2011-07-01 09:13 |
qoo98756
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x1 鮮花 x13
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 ebolaman 於 2011-07-01 09:13 發表的 : 到引言文
恩,這樣就要用表單來設計了
我試做了一個 VB6 專案 : Run macros

可以以特定 巨集名稱 批次執行大量 Word 文件,請參考
但是你將 NewMacros 從 Word 抽取出來了吧,其實不需要那個模組
.......

高手 WOW

不能做成按GO!直接執行巨集嗎~"~

因為我拿到別台電腦用時 那台電腦沒裝WORD


獻花 x0 回到頂端 [6 樓] From:臺灣碩網網路娛樂股份有限公司 | Posted:2011-07-02 06:15 |
ebolaman 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎

級別: 副版主 該用戶目前不上站
版區: 程式設計
推文 x38 鮮花 x458
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 qoo98756 於 2011-07-02 06:15 發表的 : 到引言文


高手 WOW

不能做成按GO!直接執行巨集嗎~"~

因為我拿到別台電腦用時 那台電腦沒裝WORD



沒裝 Word 將會造成很大的困擾,並非不可行

因為巨集的原先 "執行環境" 是在 Word 下,沒有了 Word,那麼 CreateObject("Word.Application") 就當場失效

後面也不能做任何事情


這麼一來就只能自行解析 doc 文件,有些像是 免費軟體 OpenOffice, Total Commander, Free Opener 都能自行開啟 doc 文件

這個對我而言太難,而且還要執行巨集這是難上加難


My BOINC stats :

獻花 x0 回到頂端 [7 樓] From:台灣寬頻通訊顧問股份有限公司 | Posted:2011-07-02 12:17 |
qoo98756
個人頭像
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x1 鮮花 x13
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 ebolaman 於 2011-07-02 12:17 發表的 : 到引言文




沒裝 Word 將會造成很大的困擾,並非不可行

因為巨集的原先 "執行環境" 是在 Word 下,沒有了 Word,那麼 CreateObject("Word.Application") 就當場失效

後面也不能做任何事情


這麼一來就只能自行解析 doc 文件,有些像是 免費軟體 OpenOffice, Total Commander, Free Opener 都能自行開啟 doc 文件

這個對我而言太難,而且還要執行巨集這是難上加難

但是我的巨集是用WORD的VB寫的

照理說 我把程式碼換到VB6在+上一個表單應該就可以了啊~"~


獻花 x0 回到頂端 [8 樓] From:臺灣碩網網路娛樂股份有限公司 | Posted:2011-07-03 01:26 |
ebolaman 手機 會員卡
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎

級別: 副版主 該用戶目前不上站
版區: 程式設計
推文 x38 鮮花 x458
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 qoo98756 於 2011-07-03 01:26 發表的 : 到引言文


但是我的巨集是用WORD的VB寫的

照理說 我把程式碼換到VB6在+上一個表單應該就可以了啊~"~


原來你是要這樣做

那麼在有安裝 Word 的電腦上,ActiveDocument 只要轉換成 objapp 的成員就 OK 了


你可以將其中一小段 巨集 程式碼貼上來看看

如果我想的沒錯的話,只要在模組加上一個程序及幾個變數即可


你認為不管 Word 還是 VB,都是用相同的程式碼

問題是在 Word 製作的巨集 通常都是控制 Word 環境的東西 (所以你最好把一小段巨集貼上來看看,免得我不知道如何去修改)

VB6 預設裡面可沒有 ActiveDocument 的控制項,所以直接將 巨集從 Word 拖到 VB6 裡面就直接執行是不可行的







[ 此文章被ebolaman在2011-07-04 18:01重新編輯 ]


My BOINC stats :

獻花 x0 回到頂端 [9 樓] From:台灣寬頻通訊顧問股份有限公司 | Posted:2011-07-03 06:32 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.066976 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言