请问怎么才能在命令行里输函数名或过程名就能动行VBA程序
本帖最后由 mccad 于 2003-4-4 12:10:22 编辑我是一个新手,VB还可以,对VBA不太在行,我发觉你们可以直接在
COMMAND: 中运行VBA工程,我就是不行,我每次用都是先进入VBA界面,然后按F5运行,可是这样很,能告诉我怎么才能在命令行里输函数名或过程名就能动行VBA程序吗,下面是个例子:
Public Sub a1()
Dim aa As Integer
aa = MsgBox("fals;jkdf;alksd", vbInformation, "jfkladsjdl;")
End Sub
关于VBA程序在命令行中的加载及运行,一句话说不清楚
可以说,不利用LISP程序页直接在命令行中简单加载运行VBA程序的可能性是没有的。通过一个简短的LISP程序来加载运行是最简单的,方法有以下几种:
(例中假设VBA工程为:addtol.dvb,模块为:mouldaddtol,过程为:subaddtol
1.定义并使用-vbarun来运行:如
(defun c:addtol()
(setvar "cmdecho" 0)
(command "-vbarun" "addtol.dvb!mouldaddtol.subaddtol")
(setvar "cmdecho" 1)
(princ)
)
2.通过定义使用vl-vbaload和VL-VBARUN函数来运行,如:
(vl-vbaload (findfile "AddTol.dvb"))
(defun c:addtol()
(setvar "cmdecho" 0)
; (vl-vbarun "mouldaddtol.subaddtol")
(princ)
)
3.通过自定义的加载函数及相关词句来完成,如:
(vl-load-com)
;;自动加载VBA程序的函数
(defun AutoVBALoad (cmdname project macro)
(eval
(list 'defun
(read (strcat "C:" cmdname))
nil
(list
'vl-vbarun
(strcat
project
"!"
(if macro
macro
cmdname
)
)
)
(princ)
)
)
)
;;自动加载VBA程序
(AutoVBALoad "AD" "addtol.dvb" "mouldaddtol.subaddtol")
4.还有一种就是通过VBA中的事件结合定义一个空的LISP程序来完成,如:
;;一些VBA程序的触发程序(LISP程序)
(defun c:ad()(princ))
'VBA事件:
Private Sub AcadDocument_BeginLisp(ByVal FirstLine As String)
Select Case UCase(FirstLine)
Case "(C:AD)"
subaddtol
End Select
End Sub
这四种方法都是要通过LISP程序来辅助完成,你看哪种简单一点。
多谢指教,但是:
可能我太笨了,用你的方法老是说找不到宏,能不能给我一个例子,我好依样而为,最好是有VBA源代码的,谢谢您了找不到宏主要是你的工程没有放到支持目录下,如果这样必须加上完整路径
我感觉还是autovbaload简单!
页:
[1]