我正在尝试找出一种方法来调用VBScript
函数使用vba in Excel
,然后将一个值传递回Excel-VBA。见下文
VBA
在 Excel 中
Sub RunTest()
Dim objString as String
'Begin Pseudocode
objString = Call VBScript Function Test()
'End Pseudocode
MsgBox objString `from VBS
End Sub
VBScript
Function Test
Test = "Hello World"
End Function
我知道这可能看起来很奇怪,因为我可以用 VBA 编写该函数,但我们推出了一个 Office 补丁,并且由于某种原因它完全终止了我的一个宏的功能。奇怪的是,我可以在任何其他 Office 程序中运行完全相同的代码,但不能在 Excel 中运行。作为解决方法,我将导致 excel 崩溃的函数移至 word,并使用 application.run 拉取它,但我宁愿不必这样做,因为打开 word 应用程序来运行我的宏会减慢我的进程。
任何帮助表示赞赏,谢谢
好吧,我觉得有点脏:)
这段代码有两个关键部分:
- the
vbs
Uses GetObject
以及重新附加到包含以下内容的文件的完整主机工作簿路径VBA
那个叫VBS
- the
VBS
向主机中的特定工作表添加值VBA
文件来触发Worksheet_Change
事件触发,运行VBA
从传递的字符串VBS
.
第1步:常规Excel代码模块
Sub VBA_to_VBS_to_VBA()
Shell "wscript c:\temp\myvbs.vbs", vbNormalFocus
End Sub
第2步:myvbs
Dim xlApp
Dim xlSht
On Error Resume Next
Set xlApp = GetObject("c:\temp\mybook.xlsx").Application
Set xlSht = xlApp.Sheets("vbs sheet")
On Error GoTo 0
If Not xlSht Is Nothing Then
xlSht.Range("A1").Value = "hello world"
Else
wscript.echo "sheet not found"
End If
步骤 3:表代码vbs表在您的 Excel 文件中
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox [a1].Value, vbCritical, "VBS insertion"
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)