引用 | 编辑
ebolaman
2011-06-30 08:42 |
1楼
▲ ▼ |
不管是巨集(Macros)的模组(.bas)还是文件的模组
只要加入 Sub main 即可,接着用 Sub main 去呼叫你想要的 程序或函数即可 Tips : 在 Word 2003 里面,点工具列右键 >> Visual Basic 这样编辑会比较快 复制程式 Sub main() MsgBox "testing" End Sub 你可以再详细描述一点 ![]() |
引用 | 编辑
qoo98756
2011-06-30 21:22 |
2楼
▲ ▼ |
抱歉 我还是不太懂...
能不能请您帮小弟做一个范本 借我参考... Sub main() MsgBox "testing" End Sub 这串程式 我要直接贴我的巨集放在? 还有 我VB是想做成一个按键 然后启动 我的巨集 抱歉 问题有点多... 有请高手包我解答 我会很感激你的... ![]() |
引用 | 编辑
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 都无法执行,大概只能用一些单纯资料转换的函数了 ![]() |
引用 | 编辑
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
![]() |
引用 | 编辑
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 文件 这个对我而言太难,而且还要执行巨集这是难上加难 ![]() |
引用 | 编辑
qoo98756
2011-07-03 01:26 |
8楼
▲ ▼ |
下面是引用 ebolaman 于 2011-07-02 12:17 发表的 : 但是我的巨集是用WORD的VB写的 照理说 我把程式码换到VB6在+上一个表单应该就可以了啊~"~ ![]() |
引用 | 编辑
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 里面就直接执行是不可行的 ![]() ![]() ![]() |