vb调用vba bas代码有问题本人是java方向的求助!

代码的味道 2017-08-03 04:30:53
Set objWord = CreateObject("Word.Application")
Set objWorkbook = objExcel.Workbooks.Open("D:\\test.docx")

objWord.Application.Run "D:\\test.docx"!abc.bas"
objWord.Close

objWord.Application.Quit
WScript.Quit


第4行40字符说语句没有结束,求助啊!!!!!
...全文
210 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-08-04
  • 打赏
  • 举报
回复
全部显示

Run 方法
请参阅 应用于 示例 特性 
应用于 Range 对象的 Run 方法。

在该处运行 Microsoft Excel 宏。区域必须位于宏表上。

expression.Run(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)

expression   必需。该表达式返回一个 Range 对象。

Arg1-Arg30   Variant 类型,可选。传递给函数的参数。

应用于 Application 对象的 Run 方法。

运行一个宏或者调用一个函数。该方法可用于运行用 Visual Basic 或 Microsoft Excel 宏语言编写的宏,或者运行 DLL 或 XLL 中的函数。

expression.Run(Macro, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, Arg14, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, Arg27, Arg28, Arg29, Arg30)

expression   必需。该表达式返回一个 Application 对象。

Macro   Variant 类型,可选。所要运行的宏。既可以是一个带有宏名的字符串,也可以是指示此函数所在位置的 Range 对象,或者是一个已注册的 DLL (XLL) 函数的注册号。如果使用字符串,将在当前工作表环境中对此字符串求值。

Arg1-Arg30   Variant 类型,可选。传递给函数的参数。

说明
此方法不可使用命名参数,参数必须通过位置进行传递。

Run 方法返回被调用宏的任何返回值。如果将对象作为参数传递给宏,该对象将转换为相应的值(通过对对象应用 Value 属性)。这意味着不能用 Run 方法将对象传递给宏。

示例
本示例示范如何调用宏表“Mycustom.xlm”(必须先打开此宏表〕中定义的宏函数 My_Func_Sum。此函数带两个数值型参数(此例中为 1 和 5)。

mySum = Application.Run("MYCUSTOM.XLM!My_Func_Sum", 1, 5)
MsgBox "Macro result: " & mySum
舉杯邀明月 2017-08-03
  • 打赏
  • 举报
回复
那个字符串参数,应该是: "文档名.模块名.过程名" 这儿的“模块名”是指文档中的“宏”的标准模块名称,而不是“外部的文件”。 docx格式的文档,是不能带“宏”的,因此你要用doc(Office 2K/2003格式)   或docm(大概是这个扩展名吧)格式文档,   把你的“abc.bas”这个文件通过VBE把它“导入”到文档里面,并注意一下导入后的模块名(可以修改)。 然后照上面说的“参数格式”传递正确的字符串,才能运行对应的宏代码。
舉杯邀明月 2017-08-03
  • 打赏
  • 举报
回复
这个doc文档(或docx文档),跟“bas文件”之间,根本就没有“从属关系”, 你的 "D:\\test.docx!abc.bas" 如何去理解????
舉杯邀明月 2017-08-03
  • 打赏
  • 举报
回复
这个Run方法,不是这样用的吧!!! 我只听说用这货的Run方法运行对应文档中的“宏”,没听说过用它能“运行bas文件”。 退一万步说,即使能“调用bas文件”来运行,也是要指定运行哪个过程啊,而不是指定一个“文件”了事…………
代码的味道 2017-08-03
  • 打赏
  • 举报
回复
我的需求是指定的word里调用指定地方的bas 比如d盘下的一个word文档调用e盘下的一个bas文件
代码的味道 2017-08-03
  • 打赏
  • 举报
回复
上面那个解决了但是现在这个说我运行不了指定宏 Set objWord = CreateObject("Word.Application") Set objWorkbook = objWord.Documents.Open("D:\\test.docx") objWord.Application.Run "D:\\test.docx!abc.bas" objWorkbook.Close objWord.Application.Quit WScript.Quit

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧